[inno setup]學習入門之二 關於寫入登錄檔的一點注意
使用inno setup 操作登錄檔無非就是寫入、查詢、刪除
//查詢path,放入變數oldPath中
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'path', oldPath);
//寫入字元xxx到環境變數path中,當然,xxx既可以是單純的字串,也可以是字串變數
//刪除環境變數path
RegDeleteValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment','path');
上面的內容網上都有,不囉嗦,關於操作環境變數時需要注意一點:就是環境變數的安裝過程中不生效的問題,即值是寫入了,但是沒有生效。這就導致瞭如果後面的操作可以檢視這個值,但是不能依賴這個值的生效,比如mysql的註冊服務、tomcat的註冊服務等等。舉個例子:你不能先將其bin目錄寫入環境變數,然後直接使用形如
Exec(‘mysqld install mysql ’, '', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
ShellExec('open' , ExpandConstant('{cmd}'), '/c mysqld install mysql ', '',SW_HIDE, ewWaitUntilTerminated, ErrorCode);這些命令來依賴環境變數中剛剛寫入的msyql_home\bin
因為那個安裝過程中寫入的環境變數沒有生效。
解決方法:直接切換到bin目錄下去執行,或乾脆直接使用完整的bin路徑去執行bin下的命令