C# MSI卸载不会删除所有文件夹

C# MSI卸载不会删除所有文件夹,c#,installation,windows-installer,logging,uninstallation,C#,Installation,Windows Installer,Logging,Uninstallation,卸载时,安装程序将删除已安装的文件夹及其所有子目录。但是,我们希望保留一些有关卸载的日志文件。如何使安装程序不删除已安装的文件夹?我的建议是将日志文件存储在%APPDATA%的文件夹下,该文件夹是在应用程序需要时创建的,而不是安装程序。由于该文件夹不是由安装程序创建的,这将解决安装程序删除该文件夹的问题 还值得一提的是,如果安装程序正在为您的应用程序在%PROGRAMFILES%下创建一个文件夹,而您将日志文件保存在该文件夹中,那么您做的是错误的,因为它不是存储日志数据的正确位置,因为: %对

卸载时,安装程序将删除已安装的文件夹及其所有子目录。但是,我们希望保留一些有关卸载的日志文件。如何使安装程序不删除已安装的文件夹?

我的建议是将日志文件存储在%APPDATA%的文件夹下,该文件夹是在应用程序需要时创建的,而不是安装程序。由于该文件夹不是由安装程序创建的,这将解决安装程序删除该文件夹的问题

还值得一提的是,如果安装程序正在为您的应用程序在%PROGRAMFILES%下创建一个文件夹,而您将日志文件保存在该文件夹中,那么您做的是错误的,因为它不是存储日志数据的正确位置,因为:

  • %对于标准用户,程序文件%不可写
  • %APPDATA%是存储日志等内容的“正确”位置(都在名称中!)

此时您是否已将文件写入文件夹,或者假设该目录将被删除,因为您今天看到它被删除(其中没有新文件)。根据我的经验,MSI不会删除非空文件夹。因此,MSI将删除自己的文件,但日志文件将在其中,因此它不会删除目录


不过我同意@Rob的说法,这很可能不是写入日志文件的最佳位置。

您使用什么来创建MSI?只是一个VisualStudio安装项目?还是像InstallShield、Wise之类的第三方?