在我們日常的開發環境的搭建中,我們有時候需要安裝很多的msi檔案,如果能把這些msi檔案的安裝自動化,我們就不用乙個乙個的雙擊,然後一步一步地安裝。
介紹一下msi檔案:
說到msi檔案,不得不先說說windows installer,它不只是安裝程式,而是可擴充套件的軟體管理系統。windows installer的用途包括:管理軟體的安裝、管理軟體元件的新增和刪除、監視檔案的復原以及使用回滾技術維護基本的災難恢復。另外,windows installer還支援從多個源位置安裝和執行軟體,而且可以由想要安裝自定義程式的開發人員自定義。要想使用這些功能,就必須通過msi檔案。msi檔案是windows installer的資料報,它實際上是乙個資料庫,包含安裝一種產品所需要的資訊和在很多安裝情形下安裝(和解除安裝)程式所需的指令和資料。msi檔案將程式的組成檔案與功能關聯起來。此外,它還包含有關安裝過程本身的資訊:如安裝序列、目標資料夾路徑、系統依賴項、安裝選項和控制安裝過程的屬性。
msi的優勢
windows installer技術就是合併在一起發揮作用的兩個部分:客戶端安裝程式服務(msiexec.exe) 和microsoft軟體安裝(msi)軟體包檔案。
msiexec.exe 程式是 windows installer 的乙個元件。 當 msiexec.exe 被安裝程式呼叫時,它將用 msi.dll 讀取軟體包檔案 (.msi)、應用轉換檔案 (.mst) 並合併由安裝程式提供的命令列選項。 windows installer 執行所有與安裝有關的任務:包括將檔案複製到硬碟、修改登錄檔、建立桌面快捷方式、必要時顯示提示對話方塊以便使用者輸入安裝首選項。
當雙擊msi檔案的時候,與之關聯的windows installer 的乙個檔案msiexec.exe 被呼叫,它將用msi.dll讀取軟體包檔案(.msi)、應用轉換檔案(.mst)進行進一步處理,然後 windows installer 執行所有與安裝有關的任務:包括將檔案複製到硬碟、修改登錄檔、建立桌面快捷方式,必要時顯示提示對話方塊以便使用者輸入安裝需要的資訊,就這樣,乙個程式安裝到了你的電腦上。
採用msi安裝的優勢在於你可以隨時徹底刪除它們,更改安裝選項,即使安裝中途出現意想不到的錯誤,一樣可以安全地恢復到以前的狀態,正是憑著此強大功能,越來越多的軟體開始使用msi作為發行的方式了。 如果你對msi檔案感興趣,可以用winrar等壓縮軟體開啟,看一下裡面的內容,滿足一下好奇心。
msi格式檔案安裝支援程式:winme和winxp對msi支援得很好,但其他版本的windows就需要安裝乙個外掛程式才能使用msi格式的檔案。
正式借助於msiexec.exe 程式的功能,我們可以在我們的c#**中呼叫這個程式,來實現我們的自動化**,看下邊的例子:
public static int executecommand(string command, int timeout)
此方法接受兩個引數,command引數是我們要執行的命令,這裡要注意的是命令中的雙引號等字元。第二個引數timeout是我們可以容忍的等待時間。
main方法:
static void main(string args)
commands="msiexec /passive /i /"aspajaxextsetup.msi/"";
executecommand(commands,200000);
console.writeline("execute correctely");
}這裡還有乙個方法i***istincurrentdirectory用來監測檔案是否已經在本地。
另外需要注意就是目錄,我這裡的目錄很有可能和你的不同,執行的時候請特別注意。
原創文章,轉引請註明作者。
NSIS安裝msi檔案
安裝包中需要安裝activeperl 5.10.0.1002 mswin32 x86 283697.msi檔案,用exec exewait exeshell直接呼叫都不行,google了一下發現baidu裡其實有講 windows r installer.v 3.01.4000.1823 msiex...
MSI檔案安裝出錯
win10 win8的系統安裝.msi檔案好像很容易報2503,2502的錯誤。主要是因為許可權不足的原因。而安裝msi需要的許可權分好幾種,要全部加上才行 1.使用者許可權不足,需要用管理員登入才可能安裝msi檔案。2.要獲取msi所在資料夾的管理許可權,右鍵資料夾 安全裡面設定 最好還不要中文 ...
INNO SETUP 自動安裝msi檔案
在自己做專案的時候,遇到乙個需要打包的程式。該程式需要用到wingraphviz外掛程式。在專案中,所用到的外掛程式是以msi檔案安裝成功的,因此將程式打包之後,移植到另外一台電腦是,需要自己手動安裝該msi外掛程式。如何實現在安裝程式的時候,自動安裝該外掛程式。在查了很多資料之後,找到了如下的解決...