自删除可执行文件(卸载程序)

时间:2012-08-05 14:07:46

标签: c# uninstaller

我正在尝试制作一个卸载程序。 我基本上需要能够删除包含卸载程序的程序文件中的目录。

我想让卸载程序为temp文件夹创建自己的副本, 然后从程序文件夹中运行卸载程序在temp中打开卸载程序并关闭它继续卸载的位置。

问题是,如何删除临时文件夹中的卸载程序...

2 个答案:

答案 0 :(得分:1)

退房:http://www.catch22.net/tuts/self-deleting-executables

他有多种解决方案 - 但主要针对C ++代码。

我目前正在尝试在C#中实现“DELETE_ON_CLOSE”方法。

对所有nay-sayers的评论: MSI在所有情况下都无法解决此问题。在我的情况下,我的应用程序需要安装到网络文件夹,任何网络用户都可以运行该应用程序。它还需要支持从任何网络工作站升级和卸载 - 不一定是安装该应用程序的同一工作站。这意味着我无法将卸载程序注册到本地计算机上的“添加/删除程序”列表中。我必须创建一个放入安装文件夹的Uninstall.exe。 MSI不支持,所以我必须自己编写。

答案 1 :(得分:-1)

即使我同意每个人都说你不应该那样做,但你能做的是:

  1. 让您的程序在其正在使用的操作系统的临时文件夹中创建可执行文件(和配置文件)。
  2. 让您的程序作为独立进程启动,然后退出。
  3. 然后该可执行文件回调实际设置内容。
  4. 完成设置后,临时可执行文件可以删除安装文件。
  5. 由于您的程序的唯一痕迹现在位于临时文件夹中,因此最终会自动清除。