簡體   English   中英

從x86 msi將文件安裝到x64“Program Files”

[英]Installing files to x64 “Program Files” from x86 msi

我正在使用具有兩個功能的InstallShield 2010(基本MSI)創建安裝程序。

第一個功能包括:

  • 主要的.NET應用程序編譯為x86,
  • 主應用程序使用的一些本機x86第三方dll(x64版本不可用)。

第二個功能包含單個組件,它是編譯為AnyCPU的MS Reporting Services的擴展。

在UI序列期間,我使用InstallScript自定義操作來枚舉x86和x64注冊表樹中的所有可用Reporting Services實例。

系統將提示用戶選擇要部署擴展的實例。

根據選定的實例,我在文件系統中查詢Reporting Services的實際位置,通常類似於“C:\\ Program Files \\ Microsoft SQL Server \\ MSSQL.2 \\ Reporting Services”,並將此值存儲在MSI屬性中。

然后通過使用Set Directory操作,我將組件的目標目錄(我們的擴展名)設置為該MSI屬性的值。

除非您嘗試為x64 Reporting Services安裝它,否則一切都安裝得非常好,因為擴展文件安裝在錯誤的位置。 即使您將MSI屬性設置為正確的路徑“C:\\ Program Files \\ MicroSoft ...”(我已經檢查了msi日志)它看起來像系統自動重定向到“Program Files(x86)”。

有沒有可能的解決方案來克服這個問題?

如果需要安裝到64位ProgramFiles文件夾,請使用64位MSI。

最后我自己解決了這個問題,而沒有使用InstallScript自定義操作創建64位MSI。

首先安裝自定義操作:

  • 手動將所需文件復制到所需位置(InstallScript可以訪問x64程序文件)
  • 將此位置保存在注冊表中,作為此功能在卸載期間使用的關鍵組件

第二個卸載自定義操作:

  • 從注冊表中讀取安裝位置(不要使用系統搜索獲取此值,因為它將由WindowsInstaller自動翻譯為“ProgramFiles(x86)”)
  • 刪除文件

您可以將INSTALLDIR屬性更改為ProgramFile64而不是ProgramFiles,這將幫助您在所需的路徑上安裝,因為您的應用程序是32位,因此路徑將是C:\\ ProgramFiles(x86)\\ Your Company Name \\ Your Product Name along有這個你是否使你的組件兼容64位?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM