在installer.nsh里加入这个代码即可
!macro preInit
SetRegView 64
ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}" "UninstallString"
${If} $0 == ''
WriteRegStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$PROFILE\AppData\Local\Programs\{APPNAME}"
${Endif}
SetRegView 32
ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}" "UninstallString"
${If} $0 == ''
WriteRegStr HKLM "${INSTALL_REGISTRY_KEY}" InstallLocation "$PROFILE\AppData\Local\Programs\{APPNAME}"
${Endif}
!macroend
代码的含义就是,读取全局安装的注册表的卸载表里的我的app的UninstallString字样,如果有,说明已经安装过了,就不用管了(防止在用户更新的时候修改了他的软件安装位置), 如果没有这个字样,说明用户没有安装过,就设置默认安装路径到appData/Local/Programs/你的软件名, 而不是大家都不喜欢的 program files下面
网友评论