WiX:如何安装我的一些产品&x27;将组件导入另一个产品目录?
我正在尝试将DLL安装到另一个产品目录中。我通过执行以下注册表搜索来查找目录:WiX:如何安装我的一些产品&x27;将组件导入另一个产品目录?,wix,wix3.5,Wix,Wix3.5,我正在尝试将DLL安装到另一个产品目录中。我通过执行以下注册表搜索来查找目录: <Property Id="CUSTOMPATH"> <RegistrySearch Id="CustomPath" Root="HKLM" Key="SOFTWARE\Wow6432Node\XXXXX\XXXXX\XXXX" Name="MY Install Path"
<Property Id="CUSTOMPATH">
<RegistrySearch Id="CustomPath"
Root="HKLM"
Key="SOFTWARE\Wow6432Node\XXXXX\XXXXX\XXXX"
Name="MY Install Path"
Type="raw" />
</Property>
有人能告诉我如何使用此属性将产品的组件安装到此目录中吗
我尝试过这种方法,但得到一个错误,[]对于DestinationDirectory属性无效
<DirectoryRef Id="MyInstallFolder">
<Component Id="MySharedDll.dll" Guid="some-guid">
<File Id='MyFile.dll' Name='MyFile.dll' DiskId='1' Source='MySourceDir\MyFile.dll'>
<CopyFile Id='x_MyFile.dll' DestinationDirectory='[REGISTRYSEARCHPATHFOUND]'/>
</File>
</Component>
</Directory>
几件事
第一个:REGISTRYSEARCHPATHFOUND!=自定义路径
第二个问题是:CopyFile@DestinationDirectory(根据doco)仅适用于构建时目录表中存在的键。您的属性在AppSearch之后才存在。因此,您应该改为使用DestinationProperty属性。此外,您还将放弃[],因为该属性已经需要属性名而不是格式化字符串。这是可行的,我可以将文件复制到正确的目录中。但现在我有另一个问题。我有两个版本的产品将一些共享DLL复制到另一家公司的program files目录中的公共目录中。当我卸载一个版本时,这些DLL将被删除。为什么引用计数在这里不起作用?我认为如果组件具有相同的guid,那么引用计数应该可以工作。组件需要具有相同的组件guid ID、相同的密钥文件和sharedcomponent属性集。组件具有相同的guid,但我如何确保它们具有相同的密钥文件和sharecomponent属性集?在WiX世界中,最简单的方法是将组件放入片段/库中,然后在两个不同的安装程序中引用相同的组件。(请不要重复)在Windows Installer/InstallShield环境中,您将组件构建到合并模块中,并在两个不同的安装程序构建中引用该模块。上面的评论是一个很好的建议。要了解如何执行此操作,请转到此处: