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