【问题标题】:Inno Setup AfterInstall procedure is executed too early, when installing MSI from Run section with /qn (silent) switchInno Setup AfterInstall 过程执行得太早,当使用 /qn(静默)开关从运行部分安装 MSI 时
【发布时间】:2020-12-01 14:30:21
【问题描述】:

执行mariadb-10.2.11-winx64.msi 文件后,安装 MariaDB 10.2.11 服务器,我想在之后对 MariaDB 10.2.11 服务器的 my.ini 文件进行一些更改已经安装好了。

我尝试使用AfterInstall 参数,如下所示:


[Files]
Source: C:\Setup\Bin\mariadb-10.2.11-winx64.msi; DestDir: {tmp}; \
    Flags: ignoreversion promptifolder deleteafterinstall; Components: server

[Run]
Filename: {tmp}\mariadb-10.2.11-winx64.msi; Parameters: /qn; \
    WorkingDir: {tmp}; Flags: shellexec waituntilterminated; AfterInstall: ConfigMyIni
[Code]

procedure ConfigMyIni;
var
  MyIni : String;
begin
  MyIni := ExpandConstant('{pf}\MariaDB 10.2\data\my.ini');
  if FileExists(MyIni) then
    begin
      if IniKeyExists('mysqld', 'character-set-server', MyIni) then
        SetIniString('mysqld', 'character-set-server', 'uft8', MyIni)
      else
        SetIniString('mysqld', 'character-set-server', 'uft8', MyIni);

      if IniKeyExists('mysqld', 'collation-server', MyIni) then
        SetIniString('mysqld', 'collation-server', 'uft8_bin', MyIni)
      else
        SetIniString('mysqld', 'collation-server', 'uft8_bin', MyIni);

      if IniKeyExists('mysqld', 'lower-case-table-names', MyIni) then
        SetIniString('mysqld', 'lower-case-table-names', '1', MyIni)
      else
        SetIniString('mysqld', 'lower-case-table-names', '1', MyIni);
    end;
end;

我已单步执行脚本代码,发现ConfigMyIni 过程在mariadb-10.2.11-winx64.msi 文件执行结束之前执行。 my.ini 文件此时不存在。如何强制ConfigMyIni 过程仅在mariadb-10.2.11-winx64.msi 文件执行结束后执行?

我已经阅读了 Inno Setup 的帮助,并在 Stack Overflow 上搜索了任何答案,但没有找到任何线索可以用来解决我的问题。

有人可以就这个问题提供一些帮助吗?

【问题讨论】:

    标签: inno-setup windows-installer


    【解决方案1】:

    这是/qn 开关的结果。使用该开关,顶级msiexec 进程将安装委托给隐藏的子进程并立即终止自身。

    考虑改用/qb/qb! 或类似名称。

    msiexec command-line options

    【讨论】:

    • 谢谢。我发现使用开关 /qb!+ 然后 MariaBD 安装程序作为模式安装程序运行。现在,链接到 AfterInstall 参数的过程 ConfigMyIni 仅在 MariaDB 安装程序执行结束后执行。
    猜你喜欢
    • 2014-04-05
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多