Процедура Inno Setup AfterInstall выполняется слишком рано, при установке MSI из раздела Run с параметром /qn (без вывода сообщений)
После исполнения mariadb-10.2.11-winx64.msi
файл, который устанавливает сервер MariaDB 10.2.11, я хотел бы внести некоторые изменения в файл my.ini сервера MariaDB 10.2.11 после его установки.
Я пытался использовать 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 и искал ответы на вопросы о переполнении стека, но не нашел подсказки, которой бы я мог воспользоваться, чтобы решить мою проблему.
Может ли кто-нибудь помочь с этой проблемой?
1 ответ
Это следствие /qn
переключатель. С переключателем верхнего уровня msiexec
процесс делегирует установку скрытому подпроцессу и немедленно завершает свою работу.
Рассмотреть возможность использования /qb
или же /qb!
или подобное, вместо этого.
Увидеть msiexec
параметры командной строки.