我有一些wix安装程序和bootstraper用于某些应用程序在工作期间在应用程序文件夹中创建其他文件,我必须在卸载期间删除这些文件。根据{{3}}和其他相同的例子,我有下一部分代码:
定义属性:
<Property Id="APPLICATIONFOLDER">
<RegistrySearch Key="SOFTWARE\ProductName"
Root="HKLM"
Type="raw"
Id="APPLICATIONFOLDER_REGSEARCH"
Name="Path" />
</Property>
定义组件:
<Directory Id="APPLICATIONFOLDER" Name="ProductName">
<Component Id="RemoveAll" Guid="some-guid">
<RegistryValue Root="HKLM"
Key="Software\ProductName"
Type="string"
Name="Path"
Value="[APPLICATIONFOLDER]"
KeyPath="yes"/>
<util:RemoveFolderEx On="uninstall"
Property="APPLICATIONFOLDER" />
</Component>
</Directory>
向功能添加组件:
<Feature Id="ProductFeature" Title="ProductName" Level="1">
...
<ComponentRef Id="RemoveAll" />
...
</Feature>
然后,当我尝试卸载此应用程序时,我在wix日志中有下一行:
...
MSI (s) (B4:64) [13:05:58:798]: PROPERTY CHANGE: Adding APPLICATIONFOLDER property. Its value is 'C:\Program Files(x86)\ProductName\'
...
Action start 13:05:58: WixRemoveFoldersEx.
MSI (s) (B4:48) [13:05:58:914]: PROPERTY CHANGE: Adding _APPLICATIONFOLDER_0 property. Its value is 'C:\Program Files (x86)\ProductName\'.
WixRemoveFoldersEx: Recursing path: C:\Program Files (x86)\ProductName\ for row: wrfE932DA8DA501DD981493D5D9F4EFDD75.
MSI (s) (B4:64) [13:05:58:918]: Doing action: CostInitialize
MSI (s) (B4:64) [13:05:58:918]: Note: 1: 2205 2: 3: ActionText
Action ended 13:05:58: WixRemoveFoldersEx. Return value 1.
...
但是没有任何内容,所有其他文件都存在于应用程序文件夹中,因此该文件夹也存在。我不知道为什么,我不知道需要改变什么来解决这个问题。
有人能帮助我吗?
答案 0 :(得分:0)
在删除文件夹之前,您需要删除应用程序创建的所有文件。尝试这样的事情:
<Component Id="RemoveOrphanFiles" Guid=InsertGUID KeyPath="yes">
<RemoveFile Id="RemoveFiles" Name="*.*" On="uninstall" />
</Component>
并添加条件,使其仅在卸载时运行... 希望这有帮助!