Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

InstallShield 64 位元作業系統打包部署完整指南

編輯:系統常見問題解答

在 64 位元 Windows 系統上使用 InstallShield 打包安裝程式時,需特別注意目錄導向、系統資料夾重導向與登錄檔視圖三大議題,否則易導致檔案安裝錯位、DLL 註冊失敗或啟動項遺失。

1. 安裝目錄自動導向

  • 64-bit Application → 自動安裝至 C:\Program Files
  • 32-bit Application → 自動安裝至 C:\Program Files (x86)

建置時正確設定 Template Summary 中的平台屬性,InstallShield 即會自動導向對應目錄。

2. 系統目錄與檔案系統重導向 (WoW64)

  • System32:64 位元系統檔案與 64 位元應用程式執行環境
  • SysWOW64:32 位元應用程式在 64 位元系統下的模擬環境

關鍵問題:32 位元安裝腳本呼叫 WINSYSDIR 或 WINDIR^"System32" 時,系統會自動重導向至 SysWOW64,導致 64 位元 DLL 無法正確部署至 System32。

解決方案:在安裝腳本中暫時停用檔案系統重導向:

// 安裝開始前
Disable(WOW64FSREDIRECTION);
// 執行需寫入 System32 的操作 (複製 64-bit DLL、註冊 64-bit COM 等)
// 安裝結束後
Enable(WOW64FSREDIRECTION);

最佳實務:在 OnFirstUIBefore() 或 Installing() 事件中 Disable,在 Installed() 中 Enable;解除安裝同理於 Uninstalling()/Uninstalled() 處理。

3. 登錄檔視圖控制

64 位元系統將 32 位元應用程式的登錄寫入導向 HKLM\Software\Wow6432Node\...。若需讓 32 位元安裝程式直接寫入 64 位元視圖 (如服務啟動項):

REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;
// 寫入 64-bit 登錄鍵值
REGDB_OPTIONS = REGDB_OPTIONS & ~REGDB_OPTION_WOW64_64KEY;
// 恢復預設行為

同理,元件 (Component) 需正確標記為 64-bit,確保檔案與登錄操作針對正確視圖。

總結檢查清單

  1. 專案平台設定為 x64 (或針對元件個別設定)。
  2. 需存取 System32/HKLM\Software 64-bit 視圖時,成對使用 Disable/Enable(WOW64FSREDIRECTION) 與 REGDB_OPTION_WOW64_64KEY。
  3. 自訂動作 (Custom Action) 若呼叫 32-bit DLL,需注意執行環境位元數。
  4. 於乾淨 64-bit 虛擬機完整測試安裝/解除安裝流程。
Copyright © Windows教程網 All Rights Reserved