卸载时有条件地删除环境路径

时间:2014-06-09 16:58:14

标签: wix environment-variables uninstall

我有产品 - 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之外没有其他文件夹,则从环境变量中删除路径。

如何修改卸载程序设置?

更新'永久'属于'是'在下面的行中永远不会删除不是所需的环境路径。我要求'永久'应该是没有,但删除路径应该是有条件的。  

1 个答案:

答案 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>

再次说明这是一个伪代码答案,因为我没有测试它,它是从我机器上的一些片段拼凑而成的,但我认为它会让你到达你想去的地方。