簡體   English   中英

在 Windows 安裝程序 (VS2008) 中同時定位 x86 和 x64

[英]Target both x86 and x64 in the Windows Installer (VS2008)

有沒有辦法使用 Visual Studio 2008 創建 Windows 安裝程序,以同時針對 x86 和 x64 操作系統。

在 TargetPlatform 屬性中,我只有: x86x64Itanium 而且我知道在某個地方還有一個叫做Any CPU但我找不到它。

另外,我不想創建兩個安裝程序。

有任何想法嗎?

謝謝。

它可以完成,但不能直接使用 Visual Studio。 一般的做法是這樣的:

  • 創建一個包含 32 位和 64 位資源的通用 MSI
  • 創建基於目標平台修改 MSI 的MST 轉換(一個用於 32 位,一個用於 64 位)
  • 使用 EXE 引導程序動態檢測平台並將正確的轉換應用於您的 MSI

您可以使用Orca創建轉換。 如果您想要商業解決方案,可以嘗試 Advanced Installer 或 InstallShield。

如果這看起來太復雜,您可以簡單地使用單獨的 32 位和 64 位軟件包。

它可以完成,但不能使用 VS 安裝程序。 我有一位同事通過 InstallShield 產品實現了這一目標,但讓我說這絕對是一個 hack,最后他得到了更好的結果,制作了兩個不同的安裝程序,每個目標位數一個。

我還需要開導你:

在 TargetPlatform 屬性中,我只有:x86,x64,Itanium。 而且我知道在某個地方還有一個叫做 Any CPU

TargetPlatform屬性不會改變您正在安裝的應用程序的位數,您會將它與程序集本身的目標平台混為一談。 MSI 是運載工具,其中的.Net 程序集是有效負載。 MSI 上的TargetPlatform設置不控制 .Net 程序集的 JIT 編譯方式,而是用於幫助確定安裝路徑(如果設置為 x86 則默認安裝路徑應為%PROGRAMFILES(x86)% ,並且將針對不同的注冊表配置單元。

我可能是錯的,但我很確定這是不可能的。 您提到的 Any-CPU 由.Net 編譯器用於您的程序集(.Net 程序集默認情況下與體系結構無關,但可以強制編譯為 x86 或 x64)。 但由於 windows-Installer 是本機 win32 exe,因此無法將其生成為“Any-CPU”。 因此,您必須為 x86 和 x64 生成 2 個相同的安裝程序。

暫無
暫無

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

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