我有产品 - ProductA和ProductB - 我使用WIX工具包创建的安装程序安装。如果我安装ProductA,它会更新环境路径以添加C:\ MyEnvPath。如果产品B尚未存在,它还将添加C:\ MyEnvPath。
ProductA安装在C:\ MyEnvPath \ ProductAPath ProductB安装在C:\ MyEnvPath \ ProductBPath
当我卸载ProductA时,它必须检查C:\ MyEnvPath是否包含除C:\ MyEnvPath \ ProductAPath之外的任何其他文件夹。如果有文件夹(C:\ MyEnvPath \ ProductBPath),则不要删除该路径。
如果除C:\ MyEnvPath \ ProductAPath之外没有其他文件夹,则从环境变量中删除路径。
如何修改卸载程序设置?
更新'永久'属于'是'在下面的行中永远不会删除不是所需的环境路径。我要求'永久'应该是没有,但删除路径应该是有条件的。
答案 0 :(得分:0)
我相信您可以使用DirectorySearch并使用Transitive组件元素来完成您想要做的事情。
作为一个例子,请注意这是比任何事情更多的伪代码
<Property Id='IS_PRODUCTB_INSTALLED' Secure='yes'>
<DirectorySearch Id='IsInstalled' Path='C:\MyEnvPath\ProductBPath' />
</Property>
...
<Directory Id="ProductBFolder" Name="ProductBPath">
<Component Id="ProductBComponent" Guid="{YOUR-GUID-HERE}" Transitive="Yes"><!CDATA[(NOT UPGRADINGPRODUCTCODE) AND (NOT IS_PRODUCTB_INSTALLED)]]>
<CreateFolder />
</Component>
</Directory>
再次说明这是一个伪代码答案,因为我没有测试它,它是从我机器上的一些片段拼凑而成的,但我认为它会让你到达你想去的地方。