1)點擊Setup.exe文件來實現安裝:
Setup.exe是一個安裝引導程序。它是安裝工程通過MSBuild創建的,其中包含了一個XML文件,定義了應用程序所需要的系統必備安裝包信息。Setup.exe程序會檢查這些系統必備安裝包是否需要被下載和安裝,如果需要,它就會先安裝那些系統必備程序。當我們運行它的時候,它會讀取setup.ini來確定安裝所需要的配置並開始安裝流程。
如果這個setup.exe是在Visual Studio 2005中生成的,那么用戶就必須有管理員權限才能運行它。我們可以看見在setup.exe的圖標上有一個防護盾,這就意味着這個程序只有管理員才能運行它。如果這個setup.exe是在Visual Studio 2008中生成的,那么用戶不一定需要有管理員的權限就能執行它,當有一些特定操作需要管理員的權限時,系統會顯示UAC對話框要求提升權限。這類Setup.exe的圖標上不會顯示防護盾。
2)點擊setup.msi來進行安裝。
Setup.msi是一個Windows Installer包。和setup.exe不一樣,直接運行MSI安裝包就不會自動安裝自定義系統必備。它只會安裝主應用程序。在安裝項目的屬性對話框中修改輸出文件的名字,我們可以自定義MSI包的文件名。當我們“運行”它的時候,其實是Windows Installer在執行MSI包定義的各項操作。因此我們需要安裝Windows Installer的正確版本才能運行setup.msi。我們也可以使用msiexec命令去安裝setup.msi文件。
有些軟件的正本里面同時含有 setup.msi 程序和 setup.exe 程序,例如Symantec AntiVirus客戶端的軟件里就含有 setup.MSI和 setup.exe 兩個安裝程序。一般情況下隨便用其一進行程序的安裝,結果是一樣的。
但是如果我們的操作系統(安裝環境)沒有安裝某些程序,則.MSI有可能不能運行,這時就要用Setup.exe來進行安裝了。Setup.exe可以利用Setup.ini來先安裝運行.MSI需要的軟件,建造一個較全的安裝環境,最后再調用.MSI程序。
所以當你確定你的安裝環境不缺少什么應該安裝的程序時,可以直接運行.MSI來安裝軟件的副本。
對於 Symantec AntiVirus 軟件來說,Setup.exe的一個主要功能就是先安裝WindowsInstaller.exe最新版,因為所有的.MSI程序都需要系統里裝有WindowsInstaller.exe才能正常運行。
總結: .exe文件進行安裝的時會檢測安裝軟件需要的環境和一些必要的組件, 適不適合當前軟件安裝, 如果缺少一些例如.netframework一類的組件, 就會先進行下載然后再進行安裝
.msi文件不檢測當前系統環境是否符合就直接進行安裝, 如果環境不符合運行到一半可能會停止安裝,並報錯或提示,其實是Windows Installer在執行MSI包定義的各項操作。因此我們需要安裝Windows Installer的正確版本才能運行setup.msi
我們都知道通過VS工具自帶的打包后會生成兩個文件,一個是exe文件,一個是msi文件。
需要說明的是msi文件時windowinstaller開發出來的程序安裝文件,它可以讓你安裝、修改、卸載你所安裝的程序,也就是說VS工具打包生成的msi文件就是window installer的數據包,把所有和安裝文件相關的內容封裝在一個包里。
VS工具打包生成的exe文件是主要是用於檢查安裝的環境,當安裝的環境檢查成功后,會自動再安裝msi文件。當然可能會有exe文件也能直接安裝的,但是開發exe的時候要比msi困難多,因為需要編寫和安裝、修改、卸載相關的很多內容,而msi把這些功能都集成化了,易於開發windows程序安裝包。