繁体   English   中英

如何从 .msi 安装程序到电子生成器 (nsis)

[英]How to go from .msi installer to electron-builder (nsis)

我目前在该领域有一个应用程序,它作为 .msi 安装程序分发(使用Wix构建)。 我刚刚完成将这个应用程序移植到 Electron 以利用所有最新和最伟大的功能,包括使用 Electron Builder 和自动更新。

任何 wix/msi 大师都知道我可以卸载旧 msi 并运行新安装程序的最佳方法吗? 我找到的解决方案涉及通过 Windows 注册表搜索以找到 msi UUID,然后使用 msiexec。

是否可以创建一个新版本的 .msi 来清理所有内容?

如果我理解正确,您想从 MSI 迁移到 NSIS 格式吗? 这里有一篇文章: https : //nsis.sourceforge.io/Uninstalling_a_previous_MSI


不过我建议,你找到了MSI并调用产品代码msiexec.exe与产品代码和你自己的卸载字符串(而不是一个如上述文档中从注册表中得到)。 通过这种方式,您可以添加一些结构来防止自发重启强制执行适当的静默运行 下面描述这种方法。


卸载 MSI :您可以通过多种方式运行卸载命令来卸载以前的 MSI 版本: 从命令行卸载 MSI 文件而不使用 msiexec

查找产品代码:您可以按如下方式查找MSI 的产品 G​​UID: 如何查找已安装的 MSI 设置的产品 G​​UID?

命令行:结合上面第一个链接中的方法 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 需要它自己特殊的命令格式: 在 NSIS 脚本中使用安装程序开关运行 MSIEXEC 还没有测试过这个,但一个建议:

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


链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM