我有一个名为“XYZ”的窗口.net应用程序,在安装后使用我的应用程序时,我创建了一个名为“ABC”的自定义文件夹(文件夹可能在应用程序路径以外的任何位置)。如何在C#.NET应用程序中卸载时删除文件夹?
当我卸载应用程序时,所有文件夹都将被删除,但“ABC”文件夹保留在那里。
如何删除除应用程序路径以外的“ABC”文件夹?
我有一个名为“XYZ”的窗口.net应用程序,在安装后使用我的应用程序时,我创建了一个名为“ABC”的自定义文件夹(文件夹可能在应用程序路径以外的任何位置)。如何在C#.NET应用程序中卸载时删除文件夹?
当我卸载应用程序时,所有文件夹都将被删除,但“ABC”文件夹保留在那里。
如何删除除应用程序路径以外的“ABC”文件夹?
你必须使用该自定义操作:
代码:
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
// Delete folder here.
}
如果你不想写自己的DeleteFolder方法添加一个参考Microsoft.VisualBasic程序:
Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory("C:\\MyFiles", Microsoft.VisualBasic.FileIO.DeleteDirectoryOption.DeleteAllContents);
注:这方面的一个很好的例子是位于here。他们更详细地解释了这个例子。起初在这个答案中并不明显的一点是,您必须在APPLICATION'S项目中添加安装程序类模板,而不是应用程序的SETUP项目。基本上,安装项目会从添加到安装项目中的“自定义操作”中的任何应用程序中调用procs Install()和Uninstall()。这个想法是重写这两个过程来注入代码来执行您的出价...
创建自定义安装程序,你可以阅读这里更多detailes 编辑 这里是更好link,样品是在VB.NET,但不难理解;)
按我的知识,如果您使用的是安装程序来安装应用程序&该文件夹是由您的应用程序&而不是安装程序创建的,则它不会将其删除。
相反,您将不得不使用将在卸载时运行的自定义操作,该操作会将其删除。或者创建一个自定义的C#应用程序,该应用程序仅在正在进行卸载时才会运行,这将删除该文件夹。 (我假设你使用的是一些专业的安装程序类似的InstallShield)
是否有可能从savedState []集合中获取原始安装目录?我不想将路径硬编码到我的应用程序中,我希望它尝试删除原始安装目录。尝试检查当前目录在'C:\ Windows \ SysWOW64'目录中结束。 :/ – 2014-05-30 09:44:13