electron 打包,NSIS修改默认安装路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了electron 打包,NSIS修改默认安装路径相关的知识,希望对你有一定的参考价值。
参考技术A 我们用NSIS打包 electron 做的exe时,默认安装路径都是C盘,如果想要修改默认安装路径,就需要写个NSIS脚本来修改。如何从 .msi 安装程序到 electron-builder (nsis)
【中文标题】如何从 .msi 安装程序到 electron-builder (nsis)【英文标题】:How to go from .msi installer to electron-builder (nsis) 【发布时间】:2019-07-26 08:31:46 【问题描述】:我目前有一个作为 .msi 安装程序分发的应用程序(使用 Wix 构建)。我刚刚将此应用程序移植到 Electron 以利用所有最新和最强大的功能,包括使用 Electron Builder 和自动更新。
任何 wix/msi 专家都知道卸载旧 msi 并运行新安装程序的最佳方法吗?我找到的解决方案包括搜索 Windows 注册表以找到 msi UUID,然后使用 msiexec。
是否可以只创建一个新版本的 .msi 来清理所有内容?
【问题讨论】:
【参考方案1】:如果我理解正确,您想从 MSI 迁移到 NSIS 格式? 这里有一篇文章: https://nsis.sourceforge.io/Uninstalling_a_previous_MSI.
不过,我建议您找到 MSI 的产品代码,并使用产品代码和您自己的卸载字符串(不是那个)调用 msiexec.exe
从注册表中获取,如上述文档所示)。这样,您可以添加一些结构来防止自发重启并强制执行正确的静默运行。这种方法如下所述。
卸载 MSI:您可以通过多种方式运行卸载命令来卸载以前的 MSI 版本:Uninstalling an MSI file from the command line without using msiexec。
查找产品代码:您可以找到 MSI 的产品 GUID,如下所示:How can I find the product GUID of an installed MSI setup?
命令行:结合上面第一个链接中的方法3.5和使用第二个链接中的信息找到的产品代码,您可以使用这样的命令行来调用从你的 NSIS 安装程序:
msiexec.exe /x 11111111-1111-1111-1111-11111111111X /QN /L*V "C:\msilog.log" REBOOT=ReallySuppress
快速参数说明:
/X = run uninstall sequence
11111111-1111-1111-1111-11111111111X = product guid of app to uninstall
/QN = run completely silently
/L*V "C:\msilog.log"= verbose logging at path specified
REBOOT=ReallySuppress = prevent unexpected reboot of computer
ExecWait:NSIS 需要自己特殊的命令格式:Running MSIEXEC in a NSIS script with installer switches。尚未对此进行测试,但建议:
StrCpy $R0 "11111111-1111-1111-1111-11111111111X"; the MSI's ProductID of my package
ExecWait '"msiexec.exe" /x $R0 /QN REBOOT=ReallySuppress'
查看此处以微调命令行:https://nsis.sourceforge.io/Uninstalling_a_previous_MSI。
链接:
https://nsis.sourceforge.io/Uninstalling_a_previous_MSI https://nsis.sourceforge.io/Auto-uninstall_old_before_installing_new How do I require user to uninstall previous version with NSIS https://nsis.sourceforge.io/Removing_MSI_packages_with_MSI_related_functions【讨论】:
太棒了。谢谢你。你发现的信息比我能找到的多得多。 效果很好,您是否需要对ExecWait
进行任何调整?如果是这样,我将更新答案“内联”。为“信息过载”道歉 - 它总是在试图使答案“可重复使用”时发生。
ExecWait
命令运行良好。我最终使用Exec
来完成安装,而无需等待旧应用程序被卸载。再次感谢,这是一个完美的答案。以上是关于electron 打包,NSIS修改默认安装路径的主要内容,如果未能解决你的问题,请参考以下文章
electron 打包流程 electron-packager + NSIS