首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从.msi安装程序转到电子生成器(nsis)

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

Stack Overflow用户
提问于 2019-03-05 07:33:46
回答 1查看 975关注 0票数 0

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

任何wix/msi专家都知道卸载旧的msi并运行新的安装程序的最佳方法?我找到的解决方案包括搜索Windows注册表以查找msi UUID,然后使用msiexec。

有没有可能只创建一个新版本的.msi来清理所有的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 08:30:55

如果我没理解错的话,你想从微星格式迁移到NSIS格式吗?这里有一篇关于这方面的文章:https://nsis.sourceforge.io/Uninstalling_a_previous_MSI

但是,我建议您找到微系统接口的产品代码,并使用产品代码和您自己的卸载字符串(而不是上面文档中显示的从注册表获得的字符串)调用msiexec.exe。通过这种方式,您可以添加一些构造来防止自发地重新启动,并强制执行适当的静默运行的。下面将介绍这种方法。

卸载MSI:您可以通过以下方式运行卸载命令来卸载以前的MSI版本:Uninstalling an MSI file from the command line without using msiexec

查找产品代码:可以通过如下方式查找微星的产品GUID:How can I find the product GUID of an installed MSI setup?

命令行:结合上面第一个链接中的方法3.5和使用第二个链接中的信息找到的产品代码,您可以使用如下命令行从您的NSIS调用:

代码语言:javascript
复制
msiexec.exe /x {11111111-1111-1111-1111-11111111111X} /QN /L*V "C:\msilog.log" REBOOT=ReallySuppress

快速参数说明

代码语言:javascript
复制
/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。我还没有测试过这一点,但我有一个建议:

代码语言:javascript
复制
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

链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54993235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档