Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在卸载时通过Wix删除生成的文件夹和文件?_C#_Asp.net Mvc_Wix_.net 4.5_Wix3.9 - Fatal编程技术网

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>