使用 64 位 Windows Installer 套件
當您建立 64 位 Windows Installer 套件 或呼叫 Windows Installer 的應用程式來安裝 64 位套件時,請執行下列動作:
- 使用 200 或更高版本的 Windows Installer 資料庫架構。 將 Page Count Summary 屬性設定為整數 200,指定 2.0 版是安裝套件所需的安裝程式最低版本。 舊版 Windows Installer 會拒絕嘗試安裝 64 位套件。 對於 Arm64 平臺上的 64 位套件,Windows Installer 資料庫架構必須是 500 或更新版本。
- 在封裝摘要資訊數據流的 範本摘要 屬性中指出,這是 64 位套件。 如果要在 Intel64 處理器上執行封裝,請在 範本摘要 屬性的平臺字段中輸入 “Intel64”。 如果要在64位擴充處理器上執行封裝,請輸入 「x64」。。 如果要在 Arm64 處理器上執行套件,請輸入 「Arm64」。 套件無法標示為支援 Intel64 和 x64 平臺,範本摘要 “Intel64,x64” 的屬性值無效。 套件無法標示為同時支援 32 位和 64 位平臺,範本摘要 “Intel,x64” 或 “Intel,Intel64” 的屬性值無效。
- 在 Component 資料表的 [屬性] 資料行中設定 msidbComponentAttributes64bit,以識別每個 64 位元件。
- 藉由參考 VersionNT64 屬性,使用選用的條件語句來檢查 64 位元作業系統的版本。 Windows Installer 會將此屬性設定為 64 位 Windows 版本,如果作系統不是 64 位 Windows,則會讓 VersionNT64 保持未定義。 如需詳細資訊,請參閱在條件語句中使用屬性 。
- 參考 Intel64 或 Msix64 屬性,使用選擇性條件語句來檢查計算機的處理器數字級別。 Windows Installer 會將這些屬性設定為計算機的目前數值處理器層級,如果這不是以 Itanium 為基礎的處理器,則會讓 Intel64 屬性未定義。 如需詳細資訊,請參閱在條件語句中使用屬性 。
- 使用 AppSearch 資料表 和 AppSearch Action,針對現有的 64 位元件執行登錄的選擇性搜尋。 若要搜尋現有的64位元件,請在 RegLocator Table的 Type 資料行中包含 msidbLocatorType64bit 位。 如需詳細資訊,請參閱 搜尋現有的應用程式、檔案、登錄專案或 .ini 檔案專案屬性
- 藉由參考 System64Folder 屬性來取得系統資料夾的路徑, ProgramFiles64Folder Property 和 64 位資料夾的 CommonFiles64Folder 属性和 SystemFolder Property、ProgramFilesFolder Property,以及 32 位文件夾的 CommonFilesFolder 属性。
- 在參考 64 位元件時,請確認應用程式使用正確的 GUID。 如果有特定元件的 32 位和 64 位版本,這些版本應該有不同的元件識別碼 GUID。
- 判斷安裝64位應用程式時是否需要定義任何新的環境變數。
- 如果要安裝 64 位 ODBC 驅動程式管理員,則攜帶它的元件應該命名為 ODBCDriverManager64。 ODBC 驅動程式管理員必須在安裝程式套件中撰寫,而且必須包含名為 ODBCDriverManager64 的元件。 如有必要,將會安裝管理員。
- 確認應用程式只會呼叫以可執行檔身分執行的32位服務。 應用程式不應該呼叫在 DLL 中執行的 32 位服務。
- 如果應用程式安裝並存 32 位和 64 位版本的元件,請確認應用程式共用 .ini 檔案資訊是否正確。
- 確認應用程式只將 32 位修補程式套用至 32 位二進位檔,並將 64 位修補程式套用至 64 位二進位檔。
- 請考慮 32 位和 64 位版本的未來升級案例,並維護升級碼。 如需詳細資訊,請參閱 修補和升級。
- 使用 啟動載入 應用程式安裝 64 位 Windows Installer 套件時,請將啟動載入應用程式編譯為 64 位應用程式。
- 若要停用受特定元件影響的登錄機碼 登錄反映,請在 Component 數據表的 [屬性] 字段中設定 msidbComponentAttributesDisableRegistryReflection 位。 這可能需要有32位和64位的相同應用程式並存。 如果設定此位元,Windows Installer 會在元件所存取的每個鍵值上呼叫 RegDisableReflectionKey 函式。 此功能適用於 Windows Installer 4.0 版。 32 位系統上會忽略此位。 在 64 位版本的 Windows XP 和 Windows 2000 上會忽略此位。
注意
MsiGetComponentPath 函式的 lpPathBuf 參數所返回的數值登錄根目錄的值,可以區分 32 位元和 64 位元操作系統上的元件。 如需詳細資訊,請參閱 MsiGetComponentPath 函式。