自定義visual studio 安裝類

當我們使用Visual Studio自帶的Setup Project來生成安裝包時,我們可以很方便的將項目的輸出部署到目標機器。然而在程序的運行過程中,可能創建了一些文件或者目錄,而這些文件和目錄在程序卸載的時候,這些文件將不會被刪出,這無疑將造成用戶信息的泄露。

       Visual Studio中爲我們提供了一種叫做Custom Action的機制,它能夠在Install, uninstall, repair, commit期間定義用戶自己的操作。例如在安裝自後打開某個網頁等都能用Custom Action來實現。而本文所要闡述的是,怎樣使用Custom Action在程序卸載期間,刪除特定的文件。

       Custom Action的原理是在用戶需要的時候執行某個可執行文件或者可執行腳本,它所支持的文件類型有exe, dll, vbs等。而使用可執行腳本執行相應操作有較多的侷限性,不能詳細定義腳本執行的具體時刻。本文主要着眼於dll類型的custom Action。

       下圖中我們可以看到,這是一個名爲TestApplication的項目以及他的部署安裝項目TestApplicationSetup:

捕獲

       我們在TestApplication中添加一個installer(安裝程序類),Installer默認繼承System.Configuration.Install.Installer,而這個類中提供了一系列接口


當我們使用Visual Studio自帶的Setup Project來生成安裝包時,我們可以很方便的將項目的輸出部署到目標機器。然而在程序的運行過程中,可能創建了一些文件或者目錄,而這些文件和目錄在程序卸載的時候,這些文件將不會被刪出,這無疑將造成用戶信息的泄露。

       Visual Studio中爲我們提供了一種叫做Custom Action的機制,它能夠在Install, uninstall, repair, commit期間定義用戶自己的操作。例如在安裝自後打開某個網頁等都能用Custom Action來實現。而本文所要闡述的是,怎樣使用Custom Action在程序卸載期間,刪除特定的文件。

       Custom Action的原理是在用戶需要的時候執行某個可執行文件或者可執行腳本,它所支持的文件類型有exe, dll, vbs等。而使用可執行腳本執行相應操作有較多的侷限性,不能詳細定義腳本執行的具體時刻。本文主要着眼於dll類型的custom Action。

       下圖中我們可以看到,這是一個名爲TestApplication的項目以及他的部署安裝項目TestApplicationSetup:

捕獲

       我們在TestApplication中添加一個installer(安裝程序類),Installer默認繼承System.Configuration.Install.Installer,而這個類中提供了一系列接口

View Code

       用戶可以更具自己的需要選擇具體實現那個接口,在這裏我們選擇實現Uninstall接口,下面是installer的具體代碼:

View Code

       之後我們需要在Setup Project中新建custom action,因爲我們需要在uninstall的時候做以上這些操作,我們需要在uninstall節點下添加新的custom action,並在彈出的窗口中選擇主項目的輸出:

TM截圖未命名

       網上也有些大神說需要重新建立一個項目,在新建的項目中建立這樣一個installer,並將這個項目的Primary Output添加到Setup Project的輸出中。其實沒有必要,完全可以在主項目中添加installer,經過測試這樣完全能夠實現在安裝或卸載期間自定義操作的需求。

      測試環境:VS2010/VS2008 .NET Framework 2.0


       用戶可以更具自己的需要選擇具體實現那個接口,在這裏我們選擇實現Uninstall接口,下面是installer的具體代碼:



       之後我們需要在Setup Project中新建custom action,因爲我們需要在uninstall的時候做以上這些操作,我們需要在uninstall節點下添加新的custom action,並在彈出的窗口中選擇主項目的輸出:

TM截圖未命名

       網上也有些大神說需要重新建立一個項目,在新建的項目中建立這樣一個installer,並將這個項目的Primary Output添加到Setup Project的輸出中。其實沒有必要,完全可以在主項目中添加installer,經過測試這樣完全能夠實現在安裝或卸載期間自定義操作的需求。

      測試環境:VS2010/VS2008 .NET Framework 2.0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章