在自定义操作

时间:2016-04-08 01:41:59

标签: outlook wix windows-installer

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

这是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 个答案:

答案 0 :(得分:4)

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

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

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

因此,如果您希望单个MSI支持两个MSI,那么两个选项都可用且条件化正常,并且如果搜索找到您的64位Outlook项目,则可能不需要任何代码或自定义操作。