mariadb-10.2.11-winx64.msi
파일을 실행 한 후 MariaDB 10.2.11 서버가 설치되었으므로 몇 가지 사항을 변경하고 싶습니다. my.ini MariaDB 10.2.11 서버를 설치 한 후 해당 서버의 파일입니다.Inno Setup AfterInstall 절차가 실행 섹션에서/qn (자동) 스위치로 MSI를 설치할 때 실행됩니다.
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
파일은 그 시점에 존재하지 않습니다. mariadb-10.2.11-winx64.msi
파일의 실행이 끝난 후에 만 ConfigMyIni
프로 시저를 강제로 실행하려면 어떻게해야합니까?
나는 Inno Setup의 도움을 이미 읽고 스택 오버플로에 대한 답변을 검색했지만 내 문제를 해결하기 위해 따라갈 수있는 단서를 찾지 못했습니다.
누구든지이 문제에 대한 도움을 줄 수 있습니까?
스크립트가 컴파일되지 않습니다. "인식 할 수없는 매개 변수 이름"AffterInstall ConfigMyIni ""- @Marco –
님의 답변에 설명 된 오타가 무엇인지 보여줍니다. 위의 코드에서 "AfterInstall :"대신 "AffterInstall"을 작성했습니다. 위의 코드를 수정했습니다. 스크립트가 컴파일 중입니다. c : \ Program Files \ MariaDB 10.2 \ data 폴더에있는 my.ini 파일이 변경되지 않았으므로 ConfigMyIni 프로 시저가 호출되지 않은 것으로 보입니다. – IMeMine
잘 디버거에서 단계별로 진행하는 것이 좋습니다 ... 제가 알 수있는 한 올바른 것으로 보입니다. –