Nei*_*eil 5 windows-installer wix
我想知道是否可以从自定义操作手动运行RemoveFolderEx元素.我猜可能不是,但有人可能知道一种我不知道的方式.
我的问题是我想运行RemoveFolderEx元素,但只在真正的UNINSTALL上,但是我的程序在升级时执行它,因为我在重新安装之前将其设置为uninstall.
我尝试通过这个方法 Wix:条件属性不工作, 但它不起作用,仍然运行时重新安装.
我唯一能想到的是能够从自定义操作中手动设置RemoveFolderEx,我知道我在正确的点运行并且仅在真正的卸载时运行.也许我的自定义操作可以使用c ++ dll,然后手动将命令添加到MSI接口,但如果我走得那么远,那么自己也可以完全编写删除逻辑.
谢谢.尼尔
编辑:我终于得到了这个工作,这是一个示例wix来显示我做了什么.
<Property Id='P.REMOVEDATAFOLDER' Secure='yes' />
<DirectoryRef Id="DATADIR">
<Component Id="C.RemoveDataFolder" Guid="myguid" KeyPath="yes">
<util:RemoveFolderEx On="uninstall" Property="P.REMOVEDATAFOLDER" />
</Component>
</DirectoryRef>
<CustomAction Id="CA.SetDataFolder" Property="P.REMOVEDATAFOLDER" Value='[DATADIR]' />
<InstallExecuteSequence>
<Custom Action="CA.SetDataFolder" Before="ValidateProductID" >(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)
在从注册表中读取DATADIR但在CostInitialize操作之前,属性P.REMOVEDATAFOLDER 仅在真正的卸载时设置.
我会使用以下方法.不要调整RemoveFolderEx操作,但使用条件自定义操作为目标属性设置适当的值.
归档时间: |
|
查看次数: |
2121 次 |
最近记录: |