Windows Installer的簡單應用

來源:互聯網
上載者:User
        因為要做一個類似Windows Update的東西,以免程式更新時跑來跑去麻煩,雖然類似的工具很多,但是大都很複雜,於是決定自己做一個類似的簡單程式。
        對比用戶端和伺服器端的程式版本,並把伺服器端新版本程式拷回來都好做(用VPN,相當於區域網路內檔案複製),但是安裝新版本程式就有問題了,因為Windows Installer安裝程式時如果發現有以前的版本就會要求你自己刪除舊版程式後再重新安裝,但我要實現的是自動卸載並安裝。直接運行msi檔案出錯,那我就穿參數,因為沒有找到相關資料就猜卸載應該是/u,啟動並執行時候沒有卸載來反倒是彈出來一個對話方塊,裡面有Windows Installer的參數設定介紹:Windows (R) Installer. V 3.01.4000.1830 

msiexec /Option <Required Parameter> [Optional Parameter]

安裝選項
    </package | /i> <Product.msi>
        安裝或配置產品
    /a <Product.msi>
        管理安裝 - 在網路上安裝產品
    /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
        播發產品 - m 播發到所有使用者,u 播發到目前使用者
    </uninstall | /x> <Product.msi | ProductCode>
        卸載產品
顯示選項
    /quiet
        安靜模式,無使用者互動
    /passive
        無從參與模式 - 只顯示進程欄
    /q[n|b|r|f]
        設定使用者介面層級
        n - 無使用者介面
        b - 基本介面
        r - 精簡介面
        f - 完整介面(預設值)
    /help
        協助資訊
重新啟動選項
    /norestart
        安裝完成後不重新啟動
    /promptrestart
        提示使用者重新啟動(如果必要)
    /forcerestart
        安裝後總是重新啟動電腦
日誌選項
    /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
        i - 狀態訊息
        w - 非致命警告
        e - 全部錯誤訊息
        a - 操作的啟動
        r - 操作特定記錄
        u - 使用者請求
        c - 初始介面參數
        m - 記憶體不足或致命退出資訊
        o - 磁碟空間不足訊息
        p - 終端屬性
        v - 詳細輸出
        x - 額外調試資訊
        + - 擴充到現有記錄檔
        ! - 每一行重新整理到日誌
        * - 記錄所有資訊,除了 v 和 x 選項
    /log <LogFile>
        與 /l* <LogFile> 相同
更新選項
    /update <Update1.msp>[;Update2.msp]
        應用程式更新
    /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
        刪除產品的更新
修複選項
    /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
        修複產品
        p - 僅當檔案丟失時
        o - 如果檔案丟失或安裝了更舊的版本(預設值)
        e - 如果檔案丟失或安裝了相同或更舊的版本
        d - 如果檔案丟失或安裝了不同版本
        c - 如果檔案丟失或較驗和與計算的值不匹配
        a - 強制重新安裝所有檔案
        u - 所有必要的使用者特定登錄機碼(預設值)
        m - 所有必要的電腦特定登錄機碼(預設值)
        s - 所有現有的快鍵方式(預設值)
        v - 從源運行並緩衝本機資料包
設定公用屬性
    [PROPERTY=PropertyValue]

請查閱 Windows (R) Installer SDK 獲得有關
命令列文法的其他文檔。

著作權 (C) Microsoft Corporation. 著作權所有,並保留一切權利。
此軟體的部分內容系基於 Independent JPEG Group 的工作。

       按這個傳參數試了好多次(我比較笨),終於成功了。下面把代碼貼出來,要安裝的程式名是Clock.msiusing System;
using System.Diagnostics;

public class mainTest
{
    public static void Main()
    {
        // Windows Installer的命令為msiexec
        ProcessStartInfo startInfo = new ProcessStartInfo("msiexec");
        // 卸載程式的參數
        startInfo.Arguments = string.Format("/uninstall Clock.msi");
        Process p = new Process();
        p.StartInfo = startInfo;
        p.Start();
        p.WaitForExit();
        // 安裝程式的參數
        startInfo.Arguments = string.Format("/i Clock.msi");
        p.Start();
        p.WaitForExit();

        if (p.HasExited) 
        {
            // 安裝完畢啟動新安裝的程式
            startInfo = new ProcessStartInfo(@"C:\Program Files\Spider\Clock\Clock.exe");
            p.StartInfo = startInfo;
            p.Start();
        }
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.