2010-03-16 211 views
11

可能重複:
What are the specific differences between .msi and setup.exe file?MSI和EXE安裝程序有什麼區別,我應該選擇哪一個?

我工作的一個安裝程序爲我的項目(C#)的新版本。

以前,我用Inno Setup創建.exe文件在工作場所其他計算機上安裝我的項目。雖然通讀了一些教程,但我碰到了Windows Installer XML,它使用XML文件構建了一個.msi安裝程序。

我的項目將可以在所有的員工可以訪問,使他們能夠安裝軟件(我目前工作的一個更新檢查以及)網絡共享

什麼是.exe之間的主要區別和.msi安裝程序?我爲什麼要選擇一個呢?考慮到我的具體環境,會有更多的意義嗎?

我發現了一些信息at this question,但沒有大量的信息。

+0

另請參閱http://stackoverflow.com/questions/902841/why-do-so-many-programs-have-both-a-setup-exe-and-a-setup-msi – rds 2010-12-30 16:23:20

回答

5

我不會將WiX用於新項目。我會在Visual Studio中使用「安裝程序項目」來構建MSI。一個安裝程序項目非常容易放在一起。

很多EXE安裝程序實際上是持有MSI,順便說一句存根或容器。

我想你已經簽出http://en.wikipedia.org/wiki/Windows_Installer

微星讓管理員限制安裝,重訂安裝,更改或添加自定義操作,自動化安裝/重新安裝/卸載次數,標準記錄和交換機的能力。它只是真正整合到企業IT環境中(http://technet.microsoft.com/en-us/library/bb742606.aspx)。

自定義安裝程序可能有很多的這些功能,但是這將取決於安裝程序包。

+1

只是想讓任何人誰看到這個答案知道它不再是準確的Visual Studio版本2010年以後的Visual Studio 2012不再支持安裝和部署項目。 – 2013-07-23 19:10:41

+0

對於Visual Studio 2013及以上的,有一個名爲「微軟的Visual Studio 2013安裝項目」(與你的版本替換2013年)在VS市場,它支持舊的安裝項目的延伸。但是,它有它禁止安裝64位應用程序中的錯誤,並在它產生具有無抗鋸齒嚮導中的文本,所以它看起來過時的。 – 2017-04-25 08:37:29

5

大多數EXE當今可用的安裝是簡單的存根,以驗證目標機器剛剛足夠的支持,推出存儲在EXE內的MSI。他們進行基本的Windows版本檢查和Windows安裝程序版本檢查,然後實質上調用msiexec並讓Windows Installer處理其餘部分。

對於非常基本的安裝,Visual Studio中的安裝程序項目可以幫助您,但對於任何類型的真正自定義或調整,您都需要一個真正的MSI編輯器。我們使用WiX並喜歡它 - 但它是一個需要學習的熊。如果你有現金,你可以投資InstallShield - 但這有它自己的一套怪癖。

3

MSI是configurable而EXE則不是。我知道這並不直接回答你的問題,但我認爲我應該指向ClickOnce技術。

MSDNSee example here.

簡單地說,一個ClickOnce應用程序 是任何的Windows Presentation 基金會,Windows窗體,或使用ClickOnce 技術出版控制檯 應用。您可以以三種不同的方式發佈 ClickOnce應用程序:從網頁,從 網絡文件共享,或從媒體 (如CD-ROM)。一個ClickOnce 應用程序可以在最終 用戶的計算機上本地安裝並運行,即使 當計算機處於脫機狀態,或者它 可以在網上-only模式 不會永久安裝在最終用戶的計算機上 任何運行。 欲瞭解更多信息,請參閱選擇 ClickOnce部署策略。

+0

有趣 - 我知道的ClickOnce的,但我認爲這只是一個在互聯網上分發軟件的方式。我將不得不看看網絡共享的東西 - 謝謝! – 2010-03-16 12:05:17

+0

不幸的是ClickOnce沒有CustomActions。 – ABCD 2013-06-24 00:46:00

1

IndigoRose的MSI工廠功能非常強大,比InstallShield便宜很多。

它在內部使用WiX並允許您以任何您喜歡的方式修改XML文件。引導程序(.exe文件,如果你添加一個)具有基於Lua的一個功能強大的腳本引擎做的......好東西。

相關問題