Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WiX:如何安装我的一些产品&x27;将组件导入另一个产品目录?_Wix_Wix3.5 - Fatal编程技术网

WiX:如何安装我的一些产品&x27;将组件导入另一个产品目录?

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"

我正在尝试将DLL安装到另一个产品目录中。我通过执行以下注册表搜索来查找目录:

<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环境中,您将组件构建到合并模块中,并在两个不同的安装程序构建中引用该模块。上面的评论是一个很好的建议。要了解如何执行此操作,请转到此处: