Sim*_*mon 5 c# asp.net-mvc wix .net-4.5 wix3.9
安装后,我的文件夹中具有以下文件夹结构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);
}
Run Code Online (Sandbox Code Playgroud)
该变量lPathToDir可以具有以下值:
C:\Program Files (x86)\CompanyName\AppName\generated\user1
// or
C:\Program Files (x86)\CompanyName\AppName\generated\user2
Run Code Online (Sandbox Code Playgroud)
然后看起来像:
我的问题:卸载后,这些子文件夹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>
Run Code Online (Sandbox Code Playgroud)
卸载后:
为什么保留这些文件夹?如何从安装文件夹中删除这些生成的文件夹?通过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>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1899 次 |
| 最近记录: |