我正在尝试为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>
有没有办法在自定义操作中或在安装过程中以某种方式执行此操作?
答案 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项目,则可能不需要任何代码或自定义操作。