2017-12-10 33 views
1

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의 도움을 이미 읽고 스택 오버플로에 대한 답변을 검색했지만 내 문제를 해결하기 위해 따라갈 수있는 단서를 찾지 못했습니다.

누구든지이 문제에 대한 도움을 줄 수 있습니까?

+0

스크립트가 컴파일되지 않습니다. "인식 할 수없는 매개 변수 이름"AffterInstall ConfigMyIni ""- @Marco –

+0

님의 답변에 설명 된 오타가 무엇인지 보여줍니다. 위의 코드에서 "AfterInstall :"대신 "AffterInstall"을 작성했습니다. 위의 코드를 수정했습니다. 스크립트가 컴파일 중입니다. c : \ Program Files \ MariaDB 10.2 \ data 폴더에있는 my.ini 파일이 변경되지 않았으므로 ConfigMyIni 프로 시저가 호출되지 않은 것으로 보입니다. – IMeMine

+0

잘 디버거에서 단계별로 진행하는 것이 좋습니다 ... 제가 알 수있는 한 올바른 것으로 보입니다. –

답변

0

그 결과는 /qn 스위치입니다. 스위치를 사용하면 최상위 수준 인 msiexec 프로세스가 숨겨진 하위 프로세스에 설치를 위임하고 즉시 종료됩니다.

대신 /qb 또는 /qb! 또는 그 유사 물을 사용하는 것이 좋습니다.

msiexec command-line options을 참조하십시오.

+0

고맙습니다. 나는 스위치/qb! +를 사용하여 MariaBD Installer가 모달 설치 프로그램으로 실행된다는 것을 발견했습니다. 이제 AfterInstall 매개 변수에 연결된 ConfigMyIni 프로시 저는 MariaDB 설치 프로그램 실행이 끝난 후에 만 ​​실행됩니다. – IMeMine