这个问题我在做安装包时遇到过, 安装包需要在安装之后再开始菜单里创建一个卸载的快捷方式,这个快捷方式指向一个exe,这个exe就在安装目录下,运行卸载之后需要将整个安装目录都删除。开始时遇到了这个问题,因为这个exe在运行所以当前的目录其他的文件都可以删除,唯独这个exe本身没法删除。后来发现VS2008打包时为快捷方式指向的exe提供了一个参数:WorkingFolder,即为其指定工作文件夹。好了,现在安装后假定Uninstall.exe在C:\软件\Uninstall.exe下,但是给其指定的工作文件夹为 "C:\Documents and Settings\user\桌面\"。这样设置之后再卸载就没问题了。现在上面的问题是不是也可以这样做呢?上面的这个工作文件夹是什么原理呢?
remove("d:\\test\\DeleteCurDir.exe");
DeleteFile
SHFileOperation
安装包需要在安装之后再开始菜单里创建一个卸载的快捷方式,这个快捷方式指向一个exe,这个exe就在安装目录下,运行卸载之后需要将整个安装目录都删除。开始时遇到了这个问题,因为这个exe在运行所以当前的目录其他的文件都可以删除,唯独这个exe本身没法删除。后来发现VS2008打包时为快捷方式指向的exe提供了一个参数:WorkingFolder,即为其指定工作文件夹。好了,现在安装后假定Uninstall.exe在C:\软件\Uninstall.exe下,但是给其指定的工作文件夹为
"C:\Documents and Settings\user\桌面\"。这样设置之后再卸载就没问题了。现在上面的问题是不是也可以这样做呢?上面的这个工作文件夹是什么原理呢?
碰到这样的问题,我一般都是首先写一个批处理文件,如:del DeleteCurDir.exe
在程序退出的时候调用一下。
批处理删除文件的时候,该程序已经不再运行,即使不能del,他也会等待一段时间,所以屡试不爽。