【问题标题】:WIX catering for x64 / x86 - security models - HKLM / HKCU适用于 x64 / x86 的 WIX - 安全模型 - HKLM / HKCU
【发布时间】:2014-06-12 16:34:24
【问题描述】:

我正在使用 WIX 3.8,并且我编写了一个 32 位控制台应用程序,我需要将它推广到 32 位和 64 位机器 - 目标机器类型有多种组合

Q1 - 是否有涵盖所有领域的模板,例如

x86/x64
Windows XP 与 Vista/7/8(安全模型 - 管理员与非管理员)
perMachine (HKLM) 与 perUser (HKCU)

我已就第三点提出建议 - 我只会发布 perMachine 安装程序,但是当我写入注册表 (HKLM) 时,安装程​​序会混淆将内容写入 HKLM 的位置(注意我可以向 HKCU 写入 OK,但这是因为安装程序在我的 Windows 8 机器上默认以非管理员身份执行)-例如,我该如何概括-我已经尝试过

....
<Package...InstallScope="perMachine" />
...
<Feature Id='MainFeature' Level='1'>
  <Component Directory='ApplicationFolder' Win64='yes'>
    <Condition>VersionNT64</Condition>
    <RegistryValue Root='HKLM' Key='SOFTWARE\xxxx\InstallProperties' Name='PidKey64' Value='[PIDKEY]' Type='string' />
    <RemoveFolder Id='CleanupPidKey64' On='uninstall' />
  </Component>
  <Component Directory='ApplicationFolder'>
    <RegistryValue Root='HKLM' Key='SOFTWARE\xxxx\InstallProperties' Name='PidKey' Value='[PIDKEY]' Type='string' />
    <RemoveFolder Id='CleanupPidKey' On='uninstall' />
  </Component>
</Feature>
...

但是上面的失败(这个包包含64位组件'...'但是模板摘要属性不包含Intel64或x64)因为我没有

平台="x64"

在包标签中。

Q2 - 但是,如果我有一个带有 x64 属性的包标签,则不是仅适用于 x64 机器的安装程序,因此在同一个安装程序中为 x86 提供服务是多余的。

上面还有一个注册表项——还有一个保存

<Property Id="PIDKEY">
  <RegistrySearch Id="SavePidKey" Root="HKLM"
                Key="SOFTWARE\xxxx\InstallProperties"
                Name="PidKey" Type="raw" />
</Property>

Q3 - 保存是否需要类似的处理?

【问题讨论】:

    标签: windows-7 x86 wix 64-bit windows-installer


    【解决方案1】:

    Windows Installer 不支持“任何 CPU”的概念。 MSI 是特定于平台架构的。您需要一个 x86 MSI 和一个 x64 MSI。这有一些技巧(谷歌混合安装程序),但你在这里和那里遇到了限制,最终编写了不可取的自定义操作。

    如果控制台应用程序是为任何 CPU 编译的 .NET,我只需将其视为 32 位软件并安装到 ProgramFilesFolder (x86) 和 32 位注册表。它将作为 32 位应用程序安装,但实际上它会作为 64 位进程运行,这没问题。只需在您的应用程序代码中读取注册表时,请务必从 32 位配置单元中读取以获取您的 pid 密钥。

    【讨论】:

    • 对 Chris 的帖子进行一些补充:此博客可能对 blogs.msdn.com/b/heaths/archive/2008/01/15/… 有所帮助,您可以安排您的 WiX 源以使用预处理器变量从同一源生成两个设置。
    • 鉴于 Chris 解释的限制,PhilDW 概述的预处理器方法是一个很好的选择 - 非常感谢你们俩
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2017-05-25
    相关资源
    最近更新 更多