2009-12-07 106 views

回答

25

不幸的是,第

NSIS可以讓你創建腳本化,程序安裝包。它非常簡單,易於使用,並且具有許多Windows安裝程序中不存在的功能。

Windows Installer(MSI)創建數據庫驅動的事務安裝包。正確編寫Windows Installer軟件包非常健壯時,文件會被損壞/刪除,並且會自動重新安裝。 Windows安裝程序知道UAC,只有在需要時才升級,基本上,如果您要爲企業市場創建軟件,則需要提供MSI。

查看The Definitive Guide to Windows Installer瞭解MSI的一個很好的介紹。

+0

此外:MSI存在很多問題 - 您需要舉一個例子,爲x86和x64創建單獨的安裝程序(其中一個例子:MSI可以總是提升或永不提升 - 它不能同時實現) - 我想象這些限制在NSIS中不存在。 – BrainSlugs83 2013-01-20 10:52:39

+1

@ BrainSlugs83請參閱MSI系列中的UAC。如果你寫得正確,沒有限制:) http://blogs.msdn.com/b/rflaming/archive/2006/10/01/uac-in-msi-notes-how-to-build-packages-that -work-for-both-standard-user-and-per-machine.aspx – saschabeaumont 2013-01-25 09:44:19

+0

另一個好處是利用NSIS內部的MSI包裝。這對於IT部門將Windows Installer服務設置爲禁用(或手動)時非常有用。你可以讓你的NSIS安裝程序檢查這個,啓用該服務,然後提取並執行你的MSI。 無論它是一個很好的寫法,@saschabeaumont – Damian 2014-11-03 21:45:29

12

無(有沒有計劃支持.MSI輸出),嘗試WIX

+3

很高興把'WiX'放在那裏作爲替代:) – 2012-11-02 16:07:18

16

NSIS安裝程序可以使用MSI Wrapper封裝在MSI文件中。這是我用來包裝NSIS和Inno Setup安裝程序的一個小工具。它使用WiX來編譯MSI,但是有一個GUI來幫助你而不是XML文件。

這是因爲我需要一個基於傳統EXE安裝程序創建MSI文件的工具。我需要支持卸載和升級,只希望封裝的安裝程序在控制面板的「添加/刪除程序」中顯示一次。

我也希望能夠在安裝MSI時將命令行參數傳遞給封裝的安裝程序。

如果你想使用它或幫助我改進它,你可以在http://www.exemsi.com找到它。

我同意將可執行安裝程序包裝到MSI軟件包中並不是理想的解決方案。然而,當你已經有exe文件時,它可以產生很大的意義:-)

+0

聖潔的廢話!這應該內置於NSIS!現在給它一個嘗試。 – BrainSlugs83 2013-01-21 07:11:36

+2

神聖的廢話是對這種模式的很好的描述。它根本沒有意義......對不起。 – 2013-07-21 20:15:02