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

在自定义操作中更改组件的Win64属性

  •  1
  • Sameer  · 技术社区  · 10 年前

    我正在尝试为outlookaddin添加注册表值。由于注册表目标由outlook架构/位决定,我需要设置组件 组件Win64属性 基于 outlook的架构 我有一个自定义动作来确定它的架构。

    这是wix的片段

      <Component Id="Registry" Guid="446A9B40-1C57-4D51-BF81-4EAD54A44BD7" Directory="OutLookAddInFolder" Win64="no" ><!--Set the value of Win64 on the basis of outlook bitness-->
        <RegistryKey  Root="HKMU" Key="Software\Microsoft\Office\Outlook\Addins\MyAddIn"  ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes" >
          <RegistryValue Name="FriendlyName" Action="write" Value="Name" Type="string" KeyPath="yes"   />
          <RegistryValue Name="Description" Action="write" Value="Description" Type="string" KeyPath="no" />
          <RegistryValue Name="LoadBehavior" Action="write" Value="3" Type="integer" KeyPath="no" />
        </RegistryKey>
      </Component>
    

    是否有一种方法可以在自定义操作中或在安装过程中进行此操作?

    1 回复  |  直到 10 年前
        1
  •  4
  •   PhilDW    10 年前

    根据我的经验,正常的方法是只需要有组件的两个副本,一个64位,一个32位(显然不同的id),并给每个副本一个条件,一个条件与另一个条件相反。你没有说你是如何决定比特的,但我看到人们对Office信息进行注册表搜索和组件搜索,并使用这些来设置属性。

    根据定义,您必须构建64位MSI(因为32位MSI必须仅包含32位组件):

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa367451(v=vs.85).aspx

    因此,如果你想让一个MSI同时支持这两个选项,那么两个选项都可以使用,并且条件良好,而且如果搜索找到你的64位Outlook项目,可能不需要任何代码或自定义操作。