Inno Script安装器:unins000文件隐藏/迁移后卸载报错问询
解决Inno Setup卸载文件隐藏/移至隐藏文件夹后的卸载报错问题
嘿,我明白你遇到的麻烦了——把卸载文件移到隐藏文件夹后,控制面板卸载时找不到程序对吧?这事儿我之前帮不少人解决过,其实核心问题就是注册表记录的卸载路径没跟上你移动文件的操作,系统找不到unins000.exe才会抛出那个报错。下面给你两种靠谱的解决方案,按需选择就行:
方案一:直接隐藏卸载文件(最简单可靠)
Inno Setup其实自带了隐藏卸载程序的参数,根本不用手动折腾文件夹。只需要在你的脚本[Setup]段里加上一行:
[Setup] UninstallerHidden=yes
加了这个参数后,安装完成后生成的unins000.exe和unins000.dat会自动被设为隐藏属性,系统依然能在默认路径找到它们,控制面板卸载完全正常,省心又省力。
方案二:正确配置移至隐藏文件夹(适合必须用独立文件夹的场景)
如果你一定要把卸载文件放到单独的隐藏文件夹里,那得让Inno Setup全程“知晓”这个路径,不能只手动创建文件夹再丢文件。按下面的步骤修改脚本:
- 创建隐藏文件夹
在脚本的[Dirs]段添加创建隐藏文件夹的指令,比如用.Uninstall作为文件夹名(Windows中前缀带.的文件夹默认隐藏):
[Dirs] Name: "{app}\.Uninstall"; Attributes: hidden
- 指定卸载文件输出路径
在[Setup]段里用UninstallOutputDir参数告诉Inno把卸载文件生成到这个隐藏文件夹里,同时它会自动更新注册表的卸载路径:
[Setup] UninstallOutputDir={app}\.Uninstall
- 卸载后清理空文件夹
为了卸载完成后不留空文件夹,在[UninstallDelete]段加上清理指令:
[UninstallDelete] Type: dirifempty; Name: "{app}\.Uninstall"
关键提醒
你之前报错的原因大概率是没设置UninstallOutputDir,导致注册表中记录的卸载路径还是默认的{app}目录,但你已经把文件移走了,控制面板自然找不到。改完上面的配置后,你可以去注册表验证一下:
- 打开注册表编辑器(运行
regedit) - 找到路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[你的程序ID] - 查看
UninstallString值,应该指向{app}\.Uninstall\unins000.exe,这样就没问题了。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

