论坛风格切换切换到宽版
  • 11863阅读
  • 15回复

INNO SETUP卸载时为什么不能强制删除安装目录 [复制链接]

上一主题 下一主题
离线bansjs
 

发帖
22
金钱
210
威望
21
只看楼主 倒序阅读 0 发表于: 2013-09-28
[code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
if MsgBox('您是否要删除用户配置信息?', mbConfirmation, MB_YESNO) = IDYES then
//删除 {app} 文件夹及其中所有文件
DelTree(ExpandConstant('{app}'), True, True, True);
end;
后生成的文件我添加了上面这些代码,怎么仍然不能卸载?求解、、、、、



离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2013-09-28
代码本身没有问题。不过这个操作最好放到卸载结束时执行,即
if CurUninstallStep = usDone then
离线bansjs

发帖
22
金钱
210
威望
21
只看该作者 2 发表于: 2013-09-28
回 1楼(gnatix) 的帖子
gnatix:代码本身没有问题。不过这个操作最好放到卸载结束时执行,即if CurUninstallStep = usDone then (2013-09-28 15:10) 

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usDone then
if MsgBox('您是否要删除用户配置信息?', mbConfirmation, MB_YESNO) = IDYES then
//删除 {app} 文件夹及其中所有文件
DelTree(ExpandConstant('{app}'), True, True, True);
end;

// 以下为引用该示例脚本显示如何自定义卸载文件的名称(原版默认为 unins000.exe,unins001.exe 等等)。
procedure CurStepChanged(CurStep: TSetupStep);
var
uninspath, uninsname, NewUninsName, MyAppName: string;
begin
if CurStep=ssDone then
begin
// 指定新的卸载文件名(不包含扩展名),请相应修改!
NewUninsName := '卸载';
// 应用程序名称,与 [SEUTP] 段的 AppName 必须一致,请相应修改!
MyAppName := '自定义卸载文件名示例程序';
// 以下重命名卸载文件
uninspath:= ExtractFilePath(ExpandConstant('{uninstallexe}'));
uninsname:= Copy(ExtractFileName(ExpandConstant('{uninstallexe}')),1,8);
RenameFile(uninspath + uninsname + '.exe', uninspath + NewUninsName + '.exe');
RenameFile(uninspath + uninsname + '.dat', uninspath + NewUninsName + '.dat');
// 以下修改相应的注册表内容
if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + MyAppName + '_is1') then
begin
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + MyAppName + '_is1', 'UninstallString', '"' + uninspath + NewUninsName + '.exe"');
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + MyAppName + '_is1', 'QuietUninstallString', '"' + uninspath + NewUninsName + '.exe" /SILENT');
end;
end;
end;
我加了,仍然不能卸载,版主帮我看看,怎么回事儿?
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2013-09-28
你说的“不能卸载”指什么?我检查没有问题,最后会把整个安装目录删除。
离线bansjs

发帖
22
金钱
210
威望
21
只看该作者 4 发表于: 2013-09-28
回 3楼(gnatix) 的帖子
gnatix:你说的“不能卸载”指什么?我检查没有问题,最后会把整个安装目录删除。 (2013-09-28 18:34) 

软件自动生成的txt、ini文件,或者复制一个文件到这个安装目录下在卸载时都不能删除,我发现有人却用5.1.12版本的安装程序,不管你在安装后加入了多少文件,只要卸载,就可以把整个文件夹删除,这个不知道怎么做到的,谢谢版主的耐心解答
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 5 发表于: 2013-09-28
你可能是你使用的INNO有问题。
离线bansjs

发帖
22
金钱
210
威望
21
只看该作者 6 发表于: 2013-09-29
回 5楼(gnatix) 的帖子
我在站内下载的Inno Setup 5.5.3版本也一样出现这个问题,不知道怎么回事?
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 7 发表于: 2013-09-29
你上面说的版本有问题,请换其它的版本试试。比如 风铃夜思雨 的 5.5.1 版本就没有问题。

附件: setup.rar (327 K) 下载次数:2
离线bansjs

发帖
22
金钱
210
威望
21
只看该作者 8 发表于: 2013-09-29
回 7楼(gnatix) 的帖子
我下载了你的程序试了一下,添加文件可以完全卸载,但是我用5.5.1版本的一样不行,不管使用版本里面的任何脚本,只要往安装目录下加入一个任意文件,就不能卸载,不知道怎么回事?

我的程序.rar (328 K) 下载次数:5
离线bansjs

发帖
22
金钱
210
威望
21
只看该作者 9 发表于: 2013-09-29
不能卸载的 setup
setup.rar (289 K) 下载次数:4