首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在32和64平台上实现单个安装程序

如何在32和64平台上实现单个安装程序
EN

Stack Overflow用户
提问于 2009-12-17 22:49:14
回答 3查看 13.1K关注 0票数 21

我在一个基于WIX的安装程序上工作。

安装程序分别构建为32和64个平台。两个平台上的安装程序版本非常相似,但很少有条件步骤,比如避免在32位安装程序中注册x64原生dll。

有没有办法把这两个安装器合并为一个?

EN

回答 3

Stack Overflow用户

发布于 2009-12-18 05:53:11

在某种程度上,这是可能的。不过,您不能仅使用MSI来完成此任务。微软的.NET安装程序包就是一个例子;"full install“包具有x86位、x64位和ia64支持。但是,此安装程序使用引导过程来执行此操作;它有一个单独的程序来确定要安装的内容,然后进行安装。在下面,您仍然需要32位MSI和64位MSI包。

不过要注意,您的安装程序的引导程序的体系结构将决定它可以安装在什么位置。如果它是一个基于x86的引导程序,那么它只能在安装了WOW64的32位窗口和64位窗口上工作( Win2k8 R2的一个可移除选项),并且可能根本不能在ia64平台上工作!

提供单独的安装程序真的简单得多,不值得将它们捆绑在一起。您将使安装程序的大小加倍或三倍,这可能会让一些客户望而却步。如果它是一个内部工具,那么就没有什么不好的地方了--有了原始的msi,就可以有这么多(远程)安装选项。

所以简而言之:是的,你可以,但不能使用MSI。

票数 3
EN

Stack Overflow用户

发布于 2009-12-17 23:06:06

我对WiX的了解还不够确切,但轶事证据表明不推荐这样做。这让我想起了我看到的所有下载(MSDN和其他许多),其中必须在32位和64位安装程序之间进行选择。实际上,现在我想起来了,我从来没有见过也没有听说过“通用安装程序”。

票数 1
EN

Stack Overflow用户

发布于 2013-02-08 02:08:12

您可以尝试在组件的条件标记中使用PROCESSOR_ARCHITECTURE环境变量,只注册需要为特定体系结构注册的组件,这将适用于构建时为run...not的组件。

检测64位操作系统的示例:

代码语言:javascript
复制
<Component Id="..." Guid="PUT-GUID-HERE">
  <Condition>NOT(%PROCESSOR_ARCHITECTURE = "x86")</Condition>
  ...
</Component>

检测32位操作系统的示例:

代码语言:javascript
复制
<Component Id="..." Guid="PUT-GUID-HERE">
  <Condition>%PROCESSOR_ARCHITECTURE = "x86"</Condition>
  ...
</Component>

如果您想了解更多关于在MSI中引用环境变量的信息,请参阅此页面:http://msdn.microsoft.com/en-us/library/windows/desktop/aa368012(v=vs.85).aspx#Access_Prefixes

有关在哪种情况下PROCESSOR_ARCHITECTURE将返回什么内容的更多信息,请参阅此页面:https://superuser.com/q/396267/117857

然而,正如这个答案的注释所述,这可能不是你真正想要的。但我认为(未经验证)您可以创建一个包含32位和64位MSI的引导程序,然后让引导程序根据操作系统体系结构选择在运行时应用哪个MSI,尽管我还没有尝试过,也不知道具体如何做,如果我找到了答案,我肯定会发布答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1922259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档