我正在使用CPack NSIS生成器来创建安装程序。但是,每次我发布新版本时,我们的用户都会在不卸载旧版本的情况下运行新的安装程序(这是可以理解的)。如何使CPack(NSIS)正确升级以进行新安装?
是否可以让安装程序覆盖所有现有的文件?如果没有,那么是否有办法阻止安装,如果它已经安装?
此外,我们的CPack调用被另一个脚本包裹,作为最后的手段,我可以破解/重新配置project.nsi文件,以便它执行上述操作之一?
我正在使用CPack NSIS生成器来创建安装程序。但是,每次我发布新版本时,我们的用户都会在不卸载旧版本的情况下运行新的安装程序(这是可以理解的)。如何使CPack(NSIS)正确升级以进行新安装?
是否可以让安装程序覆盖所有现有的文件?如果没有,那么是否有办法阻止安装,如果它已经安装?
此外,我们的CPack调用被另一个脚本包裹,作为最后的手段,我可以破解/重新配置project.nsi文件,以便它执行上述操作之一?
我的解决办法是单独维护NSIS文件,原来是没有多少额外的努力。
您必须编辑CPack使用的NSIS模板。你可以在你的cmake安装文件夹/ Modules/NSIS.template.in中找到它。
还有,某个地方,也许在常规部分的开头,你可以把: SetOverwrite上
这应该做的伎俩,虽然我没有尝试一下的机会。
有关SetOverwrite的参数的详细信息阅读NSIS脚本manual