Installation 如何为32&;64个平台
我在一个基于WIX的安装程序上工作 安装程序分别构建32和64个平台。两种平台上的安装程序版本非常相似,但很少有条件的步骤(如避免在32位安装程序中注册x64本机DLL)Installation 如何为32&;64个平台,installation,wix,Installation,Wix,我在一个基于WIX的安装程序上工作 安装程序分别构建32和64个平台。两种平台上的安装程序版本非常相似,但很少有条件的步骤(如避免在32位安装程序中注册x64本机DLL) 有没有办法将两个安装程序结合在一起?我对WiX的了解还不够肯定,但坊间证据表明不建议这样做。我想起了我看到的所有下载(MSDN和其他许多),其中您必须在32位和64位安装程序之间进行选择。事实上,现在我想起来了,我从来没有见过或听说过“通用安装程序”。这是不可能的。这是Windows Installer的一个限制,如果您想在不
有没有办法将两个安装程序结合在一起?我对WiX的了解还不够肯定,但坊间证据表明不建议这样做。我想起了我看到的所有下载(MSDN和其他许多),其中您必须在32位和64位安装程序之间进行选择。事实上,现在我想起来了,我从来没有见过或听说过“通用安装程序”。这是不可能的。这是Windows Installer的一个限制,如果您想在不使其两倍大的情况下执行此操作,则需要两个带有外部CAB文件的MSI和一个引导程序来执行正确的安装 如果您不需要MSI,请尝试。您可以很容易地基于操作系统体系结构进行有条件的安装 不管怎样,最近几周,我能找到的最好的回应是布莱尔: 标记为64位的MSI不会安装在32位系统上。没有什么 你能行 标记为32位的MSI无法将文件放入“64位目录” (它们将被重定向到32位“等效”文件夹)。你什么都不能做 做 MSI不能同时标记为32位和64位。你也无能为力 “正确”的方法是生成两个MSI,一个用于32位平台,另一个用于 另一个适用于64位平台。如果需要,它们可以共享相同的外部cab文件 您需要将它们一起装运以节省空间。如果你这样做,你可以使用 引导程序来提取相应的CAB并安装它
在某种程度上,这是可能的。但是,你不能单独使用MSI。微软的.NET安装程序包就是一个例子;“完整安装”软件包支持x86位、x64位和ia64。然而,这个安装程序使用一个引导过程来完成它;它有一个单独的程序,确定要安装什么,然后再安装。在底层,您仍然需要32位MSI和64位MSI软件包 但是要注意;然后,安装程序引导程序的体系结构将决定它可以安装在什么上。如果它是基于x86的引导程序,那么它只能在安装了WOW64(Win2k8 R2的可移动选项)的32位窗口和64位窗口上工作,可能根本无法在ia64平台上工作 提供独立的安装程序确实简单得多,因此不值得捆绑它们。您将安装程序的大小增加一倍或三倍,这可能会让一些客户望而却步。如果它是一个内部工具,那么它真的没有缺点-有原始的msi可用允许更多(远程)安装选项
简而言之:可以,但不能使用MSI。您可以尝试在组件的条件标记中使用
处理器架构
环境变量,仅注册特定架构需要注册的内容,这将在运行MSI时适用,而不是在构建MSI时。
检测64位操作系统的示例:
<Component Id="..." Guid="PUT-GUID-HERE">
<Condition>NOT(%PROCESSOR_ARCHITECTURE = "x86")</Condition>
...
</Component>
不是(%PROCESSOR_ARCHITECTURE=“x86”)
...
检测32位操作系统的示例:
<Component Id="..." Guid="PUT-GUID-HERE">
<Condition>%PROCESSOR_ARCHITECTURE = "x86"</Condition>
...
</Component>
%处理器体系结构=“x86”
...
如果您想了解有关在MSI中引用环境变量的更多信息,请参阅本页:
有关在何种情况下,
处理器体系结构
将返回什么的详细信息,请参阅本页:
然而,正如在这个答案的评论中所说的,这可能不是你真正想要的。但我认为(未经验证)您可以创建一个包含32位和64位MSI的引导程序,然后让引导程序根据操作系统体系结构选择在运行时应用哪个MSI,尽管我没有尝试过,也不知道具体如何操作,如果我发现,我一定会把答案贴出来。谢谢你的回答。我同意大多数安装程序都有不同的版本,你知道为什么吗?对用户来说,减少担忧是有益的。我仍然很好奇这是否可能。我认为最可能的原因是,在32位和64位版本之间共享的文件很少(如果有的话),因此组合安装程序的大小至少是原来的两倍。所以-这是可能的,但是如果你想要64位的,下载32位的文件会很不方便,反之亦然。谢谢sascha,这非常有帮助!NSIS看起来也很酷,我希望我知道,如果以前,它可以让我们的安装程序简单得多:)那不完全是真的。。。我尝试在64位操作系统上使用x86编译在System32文件夹上安装,它总是在64位文件夹而不是32位文件夹上复制库。所以它不会自动重定向…这不会让您在32位软件包中混合使用64位和32位组件。这是MSI的规则/限制。@BobArnson嗯,从我的发现来看,这似乎是最接近的。