C# 如何在卸载时通过Wix删除生成的文件夹和文件?
安装后,我在文件夹C# 如何在卸载时通过Wix删除生成的文件夹和文件?,c#,asp.net-mvc,wix,.net-4.5,wix3.9,C#,Asp.net Mvc,Wix,.net 4.5,Wix3.9,安装后,我在文件夹C:\Program Files(x86)中有以下文件夹结构: 文件夹generated的路径是:C:\ProgramFiles(x86)\CompanyName\AppName\generated 生成的文件夹包含应用程序在运行时通过C#code创建的子文件夹和文件: 变量lPathToDir可以具有以下值: C:\Program Files (x86)\CompanyName\AppName\generated\user1 // or C:\Program Files (
C:\Program Files(x86)
中有以下文件夹结构:
文件夹generated
的路径是:C:\ProgramFiles(x86)\CompanyName\AppName\generated
生成的文件夹包含应用程序在运行时通过C#code创建的子文件夹和文件:
变量lPathToDir
可以具有以下值:
C:\Program Files (x86)\CompanyName\AppName\generated\user1
// or
C:\Program Files (x86)\CompanyName\AppName\generated\user2
然后它看起来像:
我的问题:卸载后,将不会删除这些子文件夹user1
,user2
。我使用以下Wix声明:
<!-- Target installation folder -->
<Directory Id="ProgramFilesFolder" Name="$(var.ProgramFilesFolder)">
<Directory Id="APPLICATIONFOLDER" Name="$(var.AppFolderName)">
<Directory Id="BIN" Name="bin" />
<Directory Id="HELP" Name="help" />
<Directory Id="GENERATED" Name="generated" />
<Component Id="RemoveAll" Guid="THE-GUID-HERE">
<RemoveFile Id="RemoveAllFilesOnUninstall" Directory="APPLICATIONFOLDER" Name="*.*" On="uninstall" />
<RemoveFolder Id="RemoveAllFoldersOnUninstall" Directory="APPLICATIONFOLDER" On="uninstall" />
<util:RemoveFolderEx On="uninstall" Property="GENERATED" />
</Component>
</Directory>
</Directory>
卸载后:
为什么这些文件夹会保留?如何从安装文件夹中删除这些生成的文件夹?当我通过C#?在WixUtilExtension中使用创建这些文件夹时,可能需要设置任何权限。当我介绍它时,我就写过它。现在可以使用Bob Arnson建议的RemoveFolderEx
。但是除了声明
之外,还需要一些注册表声明:
<!-- add this: -->
<Property Id="APPLICATIONFOLDER">
<RegistrySearch Key="SOFTWARE\$(var.Manufacturer)\$(var.AppName)" Root="HKLM" Type="raw" Id="APPLICATIONFOLDER_REGSEARCH" Name="Path" />
</Property>
应该对你有帮助。具体来说,是排名前两名的答案。@Yan Sklyarenko:正如你所看到的,我已经使用了排名最佳答案的解决方案,但没有成功。啊,对了,错过了。非常感谢你的回答。我已将RemoveFolderEx
添加到声明中,但生成的文件夹仍然保留。
<!-- add this: -->
<Property Id="APPLICATIONFOLDER">
<RegistrySearch Key="SOFTWARE\$(var.Manufacturer)\$(var.AppName)" Root="HKLM" Type="raw" Id="APPLICATIONFOLDER_REGSEARCH" Name="Path" />
</Property>
<Directory Id="BIN" Name="bin" />
<Directory Id="HELP" Name="help" />
<Directory Id="GENERATED" Name="generated" />
<Component Id="RemoveAll" Guid="THE-GUID-HERE">
<RemoveFile Id="RemoveAllFilesOnUninstall" Directory="APPLICATIONFOLDER" Name="*.*" On="uninstall" />
<RemoveFolder Id="RemoveAllFoldersOnUninstall" Directory="APPLICATIONFOLDER" On="uninstall" />
<!-- add this: -->
<RegistryValue Root="HKLM" Key="SOFTWARE\$(var.Manufacturer)\$(var.AppName)" Name="Path" Type="string" Value="[APPLICATIONFOLDER]" KeyPath="yes" />
<util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />
</Component>
</Directory>