Inno Setup卸载时注销bho
Posted hyuganatsu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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卸载时注销bho的主要内容,如果未能解决你的问题,请参考以下文章