作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
安装后,文件夹 C:\Program Files (x86)
中的文件夹结构如下:
generated
文件夹的路径是:C:\Program Files (x86)\CompanyName\AppName\generated
generated
文件夹包含应用程序在运行时通过 C# 代码创建的子文件夹和文件:
var lPathToDir = Path.Combine(lFileService.GetFilePath, pSamAccountName);
if (!Directory.Exists(lPathToDir))
{
Directory.CreateDirectory(lPathToDir);
}
变量 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# 创建这些文件夹时,我是否需要设置任何权限?
最佳答案
现在与 RemoveFolderEx
一起工作正如 Bob Arnson 所建议的那样。但是除了声明<util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />
还有一些必要的注册表声明:
<!-- 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>
关于c# - 如何在卸载时通过 Wix 删除生成的文件夹和文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35766359/
我是一名优秀的程序员,十分优秀!