有些軟件的正本里面同時含有 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程序安裝包。