installshield 64位OS打包注意事項
1、安裝目錄
64位系統下,安裝目錄分Program Files和Program Files(x86)。
64bit Application會自動安裝在Program Files下;
32bit Application會自動安裝在Program Files(x86)下。
2、系統目錄
64位系統下,系統目錄分system32和syswow64。
64bit AP 運行在system32下;
32bit AP 運行在syswow64下。
Installshield打包注意事項:
問題:當32位的AP調用WINSYSDIR變量時,會默認指向syswow64,就算是調用WINDIR^"system32",也會被強迫指向syswow64。
解決:Disable(WOW64FSREDIRECTION)
WOW64FSREDIRECTION:起著判斷64位系統下調用哪個系統變量的作用,Disable掉後,就會默認指向system32。
注意:當安裝進行完後,記得Enable(WOW64FSREDIRECTION),以避免影響系統的其他程序。
經驗:
在Installing()事件中Disable(WOW64FSREDIRECTION);
在Installed()事件中Enable(WOW64FSREDIRECTION);
這樣整個安裝過程就不用去考慮何時開關了。
同樣,卸載的過程中也得在UnInstalling()和UnInstalled()中這樣做,才會卸載掉對應的部分。
3、注冊表
64位系統下,注冊表分HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
和HKEY_LOCAL_MACHINESoftwareWow6432NodeMicrosoftWindowsCurrentVersionRun
讓32bit AP注冊在默認的注冊表
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun中,命令:REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
同時,用完也記得REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;
--------------------------
需要注意的是把與32位有關的目錄,方法,都用64位的代替。這樣就可以保證正確的安裝到64位的目錄下面。
1.REGDB_OPTIONS 讓注冊表函數在64位win系統上正確讀寫而非讀寫 6432node
REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;
2. 閱讀 installshield 關於系統目錄的 64的東西
3. 設置 compoment 為64 位
4. 。。。