1. 程式人生 > >[inno setup]學習入門之二 關於寫入登錄檔的一點注意

[inno setup]學習入門之二 關於寫入登錄檔的一點注意

  使用inno setup 操作登錄檔無非就是寫入、查詢、刪除

//查詢path,放入變數oldPath中

  RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'path', oldPath);

 //寫入字元xxx到環境變數path中,當然,xxx既可以是單純的字串,也可以是字串變數

  RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', '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下的命令