簡體   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