代码之家  ›  专栏  ›  技术社区  ›  Elisha

如何为32和64平台实现单个安装程序

  •  20
  • Elisha  · 技术社区  · 15 年前

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

    有没有办法把两个安装人员联合起来?

    4 回复  |  直到 15 年前
        1
  •  28
  •   saschabeaumont    15 年前

    这是办不到的。这是Windows Installer的一个限制,如果您想在不使其两倍大的情况下执行此操作,则需要两个带有外部CAB文件的MSI和一个引导程序来执行正确的安装。

    如果你不需要MSI,试试看 NSIS . 您可以很容易地基于操作系统体系结构进行有条件的安装。

    无论如何 this has been also asked on the WiX-users list

    标记为64位的MSI不会安装在32位系统上。没有什么 你能行。

    标记为32位的MSI无法将文件放入“64位目录” (它们将被重定向到32位“等效”文件夹)。你什么都不能做

    MSI不能同时标记为32位和64位。你也无能为力。

    另一个适用于64位平台。如果需要,它们可以共享相同的外部cab文件 您需要将它们一起装运以节省空间。如果你这样做,你可以使用 引导程序来提取相应的CAB并安装它。

        2
  •  3
  •   Robert P    15 年前

    在某种程度上,这是可能的。但是,你不能单独使用MSI。微软的.NET安装程序包就是一个例子;“完整安装”软件包支持x86位、x64位和ia64。然而,这个安装程序使用一个引导过程来完成它;它有一个单独的程序,确定要安装什么,然后再安装。在底层,您仍然需要32位MSI和64位MSI软件包。

    但是要注意;然后,安装程序引导程序的体系结构将决定它可以安装在什么上。如果它是基于x86的引导程序,那么它只能在安装了WOW64(Win2k8 R2的可移动选项)的32位窗口和64位窗口上工作,可能根本无法在ia64平台上工作!

    提供独立的安装程序确实简单得多,因此不值得捆绑它们。您将安装程序的大小增加一倍或三倍,这可能会让一些客户望而却步。如果它是一个内部工具,那么它真的没有缺点-有原始的msi可用允许更多(远程)安装选项。

    简而言之:是的,你可以,但不能用微星。

        3
  •  1
  •   Dave Swersky    15 年前

    我对WiX的了解还不足以肯定,但传闻证据表明这是不推荐的。我想起了我看到的所有下载(MSDN和其他许多),其中您必须在32位和64位安装程序之间进行选择。事实上,现在我想起来了,我从来没有见过或听说过“通用安装程序”。

        4
  •  1
  •   Community CDub    8 年前

    PROCESSOR_ARCHITECTURE 组件的条件标记中的环境变量只注册特定体系结构需要注册的内容,这将在运行MSI时应用,而不是在构建MSI时应用。

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

    <Component Id="..." Guid="PUT-GUID-HERE">
      <Condition>NOT(%PROCESSOR_ARCHITECTURE = "x86")</Condition>
      ...
    </Component>
    


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

    <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

    更多关于什么的信息 处理器体系结构 在何种情况下将返回,请参见本页: https://superuser.com/q/396267/117857

    推荐文章