2016-12-21 126 views
3

免責聲明:我仍然沒有超越最基本的WiX教程,因爲每次我試圖理解這些概念時,我的腦袋就開始旋轉。MSI基於MSI的安裝基於腳本安裝的特定優勢?


我一直在讀Is it feasible/sensible to wrap an InnoSetup installer inside an MSI for easier distribution via AD?

  • 有一個工具(尋找exemsi MSI包裝)今天,它可以包含一個腳本/基於EXE安裝程序,像InnoSetup,並提供安裝,升級並卸載。
  • 從我的經驗來看,這就是用戶所期望的:可以安裝產品,更新的設置可以升級它,卸載會刪除產品。
  • Yetquiteafew該問題的答案表明,只有「真正的」MSI能夠可靠地提供「全部」(?)必需(?)特徵。

因此,考慮什麼一直以爲安裝程序應該做的是:

  • 用盡可能少麻煩越好
  • 安裝產品允許修復產品(可能通過簡單地運行再次安裝)
  • 允許通過較新的設置升級產品
  • 最終卸載產品,儘可能少地留下痕跡。

問題是,給出只需在MSI,包裝exe文件,它是證明,只要有正確的工具,該點上方是可能做什麼額外的好處「真正的」 MSI軟件包都提供?

這裏要清楚的是:MSI包似乎爲企業/ AD/GPO分發提供了額外的好處,如果您擁有一個裸露的.exe安裝程序,您就沒有這個好處 - 我不質疑這一點。我感興趣的是 - 實際使用 - 功能只能通過「真正」的MSI包進行?

+0

作爲系統管理員,本地MSI軟件包(幾乎)始終支持無提示安裝等功能,並在安裝失敗時正確返回錯誤代碼。 MSI包裝並不總是像我的經驗一樣可靠。 –

+0

@哈里約翰斯頓 - 謝謝你的提示。是的,包裝需要正確地轉發錯誤代碼,並且需要考慮靜默安裝,但兩者都可以用「簡單」包裝。 –

+0

絕對有可能,當然前提是原始可執行文件正確生成錯誤代碼並支持靜默安裝。我的意思是說,這是你需要明確支持包裝包的東西,如果你構建了一個本地MSI,你可以免費獲得這些東西。 –

回答

3

MSI支持按需安裝附加功能。由MSI創建的快捷方式(.lnk)包含由Windows識別的特殊metadata,並且可以自動修復和/或安裝缺少的功能。

另一個優點是,如果軟件包已簽名,非管理員可以安裝補丁without UAC elevation

MSI的一些缺點是:

  • 無法創建32位和64位的目標單一的.msi。
  • 單用戶/非高架安裝人員可能會有問題,因爲對此的支持有changed over time,並且已添加新的MSI屬性。
  • 根據您支持的最低Windows版本,您可能需要測試/處理多個主要版本的MSI。
  • 通過存儲完整內容來擴展您的系統驅動器。msi在最新版本的Windows上的%windir%\ Installer。
  • 通過存儲路徑和其安裝的每個文件的其他信息來擴大註冊表。
+0

謝謝。不是我需要的兩個功能,但很高興知道。我喜歡它是如何尋求優勢,並列出了三個 - 然後列出5個缺點:-D –

+1

如果你扭動我的手臂,我可能會列出更多的缺點;)MSI當然有其他獨特的功能,如轉換和合並模塊,但我我不確定我是否會稱他們爲優勢。 – Anders

3
  1. 安裝或拆卸操作是按照(產品的)特徵。這不像過去那樣相關,因爲安裝人員越來越少,用戶的問題就越少。對於大型安裝程序,例如Visual Studio和SQL Server,通過引導程序詢問問題 - 與您正在考慮的內容相反。
  2. 安裝,修理和拆卸由組件(跨所有產品和版本)。引用計數處於Windows Installer控制之下,與Windows Installer之前的技術相比,其損壞的可能性較小。共享組件現在不太常見,因爲不同的應用程序技術,如.NET和免註冊COM。大型系統可能共享組件,但它們又可能分爲單獨的安裝程序,以便多個產品不需要組件。

是否這些優點取決於您的安裝架構的需求。

0

MSI支持廣告可用應用程序而無需安裝它們(更多詳細信息,請參閱this MSDN post)。它在企業環境中很方便,因爲它只允許部署最重要的應用程序,並且1)在用戶機器上節省物理空間; 2)通過每個用戶的許可降低應用程序的開支(只有真正需要該應用程序的人才會真正安裝並激活許可證)。

+0

謝謝。從來沒有進入rhat功能集。另外,從閱讀你的短文看來,這可以通過包裝來完成。乍看之下看起來似乎是我需要「原生」MSI組件的東西。 –