跪求inno setup补丁包更新后,卸载程序不能删除注册表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跪求inno setup补丁包更新后,卸载程序不能删除注册表?相关的知识,希望对你有一定的参考价值。

inno setup补丁包更新后,卸载程序不能删除注册表
原打包程序我加上,卸载清除注册表选项,效果很好。
但是做了个补丁包,更细版本后,再卸载程序,就不能清除注册表了。麻烦朋友们帮忙解决下,谢谢·~~

参考技术A 用360安全卫士或者windows优化大师清理 肯定能清理掉,不过360安全卫士清理痕迹是注册表默认的是不清理的 要在注册表一栏打钩。 参考技术B 我是想实现更新包安装后,卸载能够删除注册表。 参考技术C 试一试吧
windows install clean up

Inno Setup卸载时注销bho

Inno setup是一个制作安装包的免费工具,比如你用Qt开发完成一款软件,拿Inno setup打个安装包甩给客户安装就好了。

但是bho插件在注册后,万一用户卸载软件时,bho插件还是躺在管理加载项的列表里面,强迫症的我受不了。。。

特此,记录一下卸载软件时,如何注销bho插件。

#define MyAppUnregName "unregister.bat"

[UninstallRun]
Filename: "{app}{#MyAppUnregName}"

 

其实就是执行一段bat脚本,注销bho插件,顺便将bat内容也贴出来

@echo off
cd /d "%~dp0"
cacls.exe "%SystemDrive%System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%getadmin.vbs" del /f /q "%temp%getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%getadmin.vbs"
echo WScript.Quit >>"%temp%getadmin.vbs"
"%temp%getadmin.vbs" /f
if exist "%temp%getadmin.vbs" del /f /q "%temp%getadmin.vbs"
exit

:Admin
@echo off
set filename=bho.dll
%SystemRoot%Microsoft.NETFrameworkv4.0.30319RegAsm.exe /u "%~dp0"\%filename%

顺便解释一下,从:Admin往上(包括这句)都是请求管理员权限的,否则在win7以上系统(包括win7)直接双击会注册失败,加上那一坨,,就可以直接双击bat了。。

bho是基于.net framework 4.0,所以RegAsm命令直接写死了,若是有更好的办法,请留言分享一下>_<,感激不尽。

"%~dp0"\%filename%是指定bat文件的,其中的各种引号,是因为bat所在的路径有空格(比如在xp系统下,桌面的路径是:“C:Documents and SettingsAdministrator桌面”,总之很变态就是了)会导致注册失败,加个引号就解决了

顺便提一下,注销是/u,注册是/codebase

 

还有一点,若是卸载的时候,顺便想删除用户目录的话,可以用如下代码

#define MyAppDocName "Tax Enterprise"

[UninstallDelete]
Name: "{userdocs}{#MyAppDocName}config"; Type: filesandordirs

这样的话,卸载的时候,我的文档 目录下的"Tax Enterprise"下的config文件夹就不见了,包括config下的文件和文件夹

 

好啰嗦的说。。。

以上是关于跪求inno setup补丁包更新后,卸载程序不能删除注册表?的主要内容,如果未能解决你的问题,请参考以下文章

关于Inno Setup卸载程序删除文件夹的问题

Inno Setup卸载时注销bho

用inno setup或者其他软件打包exe程序 怎么防止重复安装的问题

inno setup打包的安装文件更换位置后图标改变了

Inno Setup中做补丁通过注册表获取原程序安装目录

Inno Setup5 如何更改卸载图标(我做出来的安装程序和卸载的一样)我想把卸载图标换成别的。