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

Outlook 在自定义操作中更改组件的Win64属性,outlook,wix,windows-installer,Outlook,Wix,Windows Installer,我正在尝试为outlookaddin添加注册表值。由于注册表目标由outlook体系结构/位决定,因此我需要根据outlook的体系结构设置组件组件Win64属性,并且我有一个自定义操作来确定它的体系结构 这是wix的片段 <Component Id="Registry" Guid="446A9B40-1C57-4D51-BF81-4EAD54A44BD7" Directory="OutLookAddInFolder" Win64="no" ><!--Set the val

我正在尝试为outlookaddin添加注册表值。由于注册表目标由outlook体系结构/位决定,因此我需要根据outlook的体系结构设置组件组件Win64属性,并且我有一个自定义操作来确定它的体系结构

这是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>


有没有一种方法可以在自定义操作中或在安装过程中实现这一点?

根据我的经验,通常的方法是创建组件的两个副本,一个64位和一个32位(显然不同的ID),并为每个组件提供一个条件,一个相反。你没有说你是如何决定比特数的,但我见过人们用注册表搜索和组件搜索Office信息来设置属性

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


因此,如果您希望一个MSI同时支持这两个选项,那么让这两个选项都可用和有条件就行了,如果搜索找到64位Outlook项目,可能不需要任何代码或自定义操作

根据我的经验,通常的做法是只需拥有组件的两个副本,一个64位副本和一个32位副本(显然是不同的ID),并给每个副本一个相反的条件。你没有说你是如何决定比特数的,但我见过人们用注册表搜索和组件搜索Office信息来设置属性

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


因此,如果您希望一个MSI同时支持这两个选项,那么让这两个选项都可用和有条件就行了,如果搜索找到64位Outlook项目,可能不需要任何代码或自定义操作

我正在构建32位MSI,并检查outlook.exe的图像类型以确定其在Customaction中的位。无论如何,条件功能对于32位msi中的64位注册表操作很好。谢谢我正在构建32位MSI,并检查outlook.exe的图像类型以确定其在Customaction中的位。无论如何,条件功能对于32位msi中的64位注册表操作很好。谢谢