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 的产品 G​​UID,如下所示: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

electron打包之nsis配置

electron-builder中NSIS配置项

如何从 Electron-builder NSIS 获取选定的语言

NSIS做的安装包为啥路径总是C盘呢?

Electron nsis Installer x 64 不包括 node_modules?