2011-06-02 35 views
4

我有一個需要作爲一個包交付的應用程序。EXE和MSI之間的最佳合作

  1. EXE和MSI安裝程序中的最佳選擇是什麼?爲什麼?
  2. 是否有任何開源工具可以反編譯EXE或MSI?

回答

3

許多安裝。您需要一個EXE來確保安裝所有先決條件:例如.NET框架;如果它們不是,則會安裝先決條件。然後它提取處理安裝的其餘部分的MSI包。

MSI提供了一些高級安裝功能:

  • 回滾支持:如果在安裝過程中失敗的東西,它的系統返回的狀態開始安裝之前。
  • 修復:如果您的應用程序停止正常運行,用戶可以使用此功能重新安裝應用程序。它恢復丟失的文件,註冊表項。
  • 更新/升級:MSI處理應用程序更新/升級。 MSI軟件包可以配置爲在用戶開始安裝較新版本時自動執行以前版本的應用程序。這對用戶是透明的:看起來好像只安裝了新版本。
  • 補丁:MSI支持補丁。如果只修改了應用程序的多個文件,則可以使用修補程序包(MSP)對其進行更新。該補丁將比完整軟件包小。
  • 廣告快捷方式:您可以允許用戶不安裝應用程序的某些功能,除非它們已被使用。當用戶訪問這樣的功能時,MSI將安裝必要的文件。

雖然學習這項技術需要一些時間。


您可以從EXE文件中執行任何操作,而MSI僅用於安裝。 Inno SetupNSIS安裝包分發爲exe文件。他們有描述安裝步驟的腳本語言。


WiX toolset具有MSI反編譯器叫dark

5

這取決於你在討論什麼樣的EXE。

MSI是由Windows安裝程序運行的安裝程序包。如果您使用Visual Studio進行安裝項目,它將爲您提供MSI和EXE。在這種情況下EXE只是一個引導程序(MSI or EXE)。在Windows Installer檢查完成後,它將運行MSI。

如果您使用其他工具如InnoSetup,這個EXE本身就是一個安裝包,而不是引導程序。

關於您關於MSI編輯器的問題:Orca MSI Editor

如果不需要非常複雜的安裝程序,我建議使用Visual Studio安裝項目,因爲它很簡單,但功能足夠強大。

1

MSI是一個微軟安裝程序,它比舊的EXE,Wise Installer和其他許多人都支持它更新。它允許一個聰明的安裝與需要部署的東西(如CAB文件和註冊表設置等),它可以檢查以前的安裝等。

MSI是唯一的安裝,而EXE可以做其他事情像奔跑。

我會用InstallShield和建立一個MSI

我這些天使用MSI內部,儘管他們分佈EXE不確定#2

1

你可以告訴Visual Studio讓你的應用程序進入MSI/EXE。如果這樣做,並做你想做的,只要做到這一點。您在創建安裝程序方面付出了很多努力。

MSI表示您使用的是Microsoft的安裝程序。 Microsoft有理由推薦(即不提供應用程序認證)MSI。然而,一個好的MSI很難生產,所以我不推薦它,除非你需要你的應用程序被認證。

如果您不需要認證,我建議您使用Inno Setup以及前端​​。它很容易使用,併爲您提供簡單的界面來執行最常見的安裝程序任務。在一個捏,它支持腳本,讓你做任何它不支持。

相關問題