我正在使用 NSIS 为我在 Visual C++ 2012 Express 中执行的项目制作可执行文件。因为我是初学者,所以我从 HM NIS Edit 中的设置向导开始。
我正在尝试将 Visual C++ 2012 Redistributable 与我的程序捆绑在一起,但是每次重新运行安装程序时,Redistributable 都会弹出一个“修复”和“删除”选项,这看起来很烦人。
所以我决定写一点 NSIS 脚本,到目前为止,这是脚本的开始:
Var STR
Section CheckForReg
ClearErrors
ReadRegDWORD $0 HKLM "SOFTWARE\Classes\Installer\Dependencies\{8e70e4e1-06d7-470b-9f74-a51bef21088e}" "Version"
ifErrors 0 Blank
StrCpy $STR "$INSTDIR\vcredist_x86.exe"
GoTo End
Blank:
StrCpy $STR ""
End:
SectionEnd
这部分在脚本的最开始调用,全局变量 STR 应用于:
!define MUI_FINISHPAGE_RUN $STR
不久之后。
显然,这是一种非常愚蠢的方法,但我不需要太多。
问题是 CheckForReg 始终认为注册表不存在,并且不会移动到标签空白处。作为说明,我每次都手动检查注册表,注册表项如下所示:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\{8e70e4e1-06d7-470b-9f74-a51bef21088e}]
"Version"="11.0.51106.1"
"DisplayName"="Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.51106"
所以问题是:我在哪里做错了?它看起来很简单,但显然我有一些倒退。
-- 删除了代码转储