在我們做系統開發的時候,都會面臨一個安裝包制作的問題,如何把我們做好的系統,通過安裝包工具整合成一個安裝包給客戶進行安裝。安裝包的優勢就是一步步安裝就可以了,不用復制一大堆文件給客戶,還怕缺少那個文件導致系統運行出錯。本文主要介紹基於DevExpress的Winform程序安裝包的制作內容,包括VS2010和VS2013/V2105的不同處理方式。
我們知道,VS2010是最后一個可以使用微軟安裝包制作工具的VS版本了,所以后面VS2012/2013/2015版本都需要使用第三方安裝包制作工具,微軟推薦使用Install Shield打包工具,本文以這兩個環境進行介紹安裝包的制作出來。
1、VS2010使用微軟安裝包制作工具
在該版本及之前的VS 開發工具,都是使用微軟自帶的安裝包工具進行打包,方便快捷,雖然也聽說過 Install Shield等大名鼎鼎的安裝包制作,但是集成的東西,總是感覺方便一些,而且也能夠應付大多數的安裝包制作情景,不知道為什么微軟把它從后續的版本中移除。
不過慶幸VS2010版本還是繼續能夠使用其內置的安裝包制作工具,本小節介紹的就是基於這個內置安裝包制作工具做我們的DevExpressWinform程序。
1)准備好待發布的安裝文件
做安裝包的時候,一般可以使用項目引用的方式來構建(如活動項目輸出的方式),不過我們可能需要對生成的DLL進行一下混淆等特殊處理,所以一般我們是創建一個目錄來放置需要發布的文件的。如下所示,我在Bin目錄下創建一個DeployedMis的目錄,用來存儲待發布的文件的。
然后我們在Debug或者目錄里面,把對應的exe或者DLL文件進行混淆操作,我們一般可以選.NET Reactor混淆工具進行處理一下,如下所示。
然后我們把生成的Debug目錄的文件復制一份到DeployedMis目錄,並把混淆生成的文件替換原有的文件就可以了。最后順帶捎上漢化文件(如zh-Hans目錄里面的文件)、RDLC報表文件、Excel導入模板和其他資源文件,如下圖所示。
2)制作VS安裝包
目前我們就准備好發布的文件了,接下來的就是要啟動安裝包的制作方面的事情了,先在VS解決方案里面創建一個VS安裝包工程項目,如下所示。
然后設置好安裝包的一些基礎信息,如公司信息、產品名稱等關鍵信息,也就是在安裝包的項目里面打開屬性,得到界面如下圖所示。
然后我們在文件系統視圖里面,創建相關的目錄,並加入相關的文件,注意【應用程序文件夾】目錄下的文件就是我們安裝到客戶目錄的文件內容,在這里加入一些主程序exe,然后會自動引入一些DLL的文件的,所以最終得到下面的工程界面截圖。
我們在exe的主程序上面右鍵,創建一個快捷方式,設置好圖標后,復制到用戶桌面就會成為一個快捷方式的連接了。
如果我們需要為程序添加一個卸載快捷方式,那么我們在【應用程序文件夾】里面加入C:\Windows\System32\msiexec.exe的系統文件,然后創建一個它的快捷方式,復制到對應的目錄上,如下界面所示。
卸載的快捷鍵還需要設置一些安裝包的產品ID才能進行卸載處理,如下所示。
其中屬性需要設置Arguments參數為:-x {CB83AA8B-4504-48FF-BF3B-E269CC3244EA},其中-x后面的參數就是我們安裝項目的ProductCode內容。
弄好這些,我們編譯整個安裝包就可以生成一個符合實際生產需要的安裝包了,安裝包同時也具有程序的卸載功能快捷鍵了,在Win10系統中的菜單如下圖所示。
有時候,為了方便檢查是否主程序的自動引用少了某些文件,我們還可以檢查【檢測到的依賴項】列表,查核是否少了某些文件,如果都符合,那么就肯定沒問題了。
如上圖所示,我們看到添加主程序后的自動檢測的引用文件,就包含了DevExpress的相關DLL了,這樣我們做成安裝包后,客戶安裝這個安裝包就可以使用DevExpress的界面內容了,而不需要在客戶端完整的安裝一套DevExpress組件了。
2、VS2013及以上,使用InstallShield安裝包制作工具
在VS2013上,我們就需要使用InstallShield進行安裝包制作了,我曾經在之前的博客里介紹過利用InstallShield制作安裝包的操作《基於InstallShield2013LimitedEdition的安裝包制作》,在使用VS2013創建安裝包之前,我們需要安裝一個InstallShield的版本,其中LimitedEdition是一個可以申請免費賬號使用的版本,當然專業版InstallShield是收費,而且費用也不低的了。使用LimitedEdition,我們也可以創建一般的安裝包,本文主要介紹基於LimitedEdition版本的安裝包制作。
安裝完畢LimitedEdition版本后,我們可以在VS的新建項目里面,有一個安裝包的創建工程模板了。
在做基於DevExpress的Winfrom系統InstallShield安裝包,我們一樣要做上面的事情,就是需要准備一個專門的目錄用來放置編譯並混淆好的DLL,這樣我們在InstallShield LimitedEdition加入主程序的時候,會自動引入所需的DLL以及方便添加所需的資源文件了。
InstallShield工具提供了輔助的各個步驟的操作,基本上我們按照要求處理就可以實現了,具體操作指引界面如下所示。
例如,我在雲會員系統的客戶端安裝包,就是使用這個InstallShield工具進行打包的,設置主安裝項目的信息如下所示。
在安裝包的制作過程中,最為關鍵的就是所需文件的添加處理了,如果添加正確,就能正常進行編譯、安裝操作,否則就容易編譯過不了。
我們在【Application Files】里面,添加所需的文件,主要添加主程序以及所需的一些文件,相關的引用DLL可以通過依賴進入。操作如下所示。
如果我們單擊左邊【Files and Folders】,我們就可以更加詳細的操作整個安裝包的文件和目錄內容了。
如可以查看主程序文件的依賴文件操作。
單擊上圖右鍵菜單的【Dependencies from scan at build...】的時候,我們可以看到主程序集帶入的相關DLL引用,里面有很多DevExpress相關的DLL,我們可以通過檢查這個列表,確認是否少了一些特殊的DLL引用,如果少了,我們再添加對應的文件到安裝包目錄里面就可以了。
接着可以在其他步驟增加快捷方式,如增加啟動程序、卸載程序的快捷方式,如下所示。
我們也可以通過【Shortcuts】功能進入更加直觀的界面顯示,如下所示。
以及圖標修改等操作,還有就是可以修改修改默認安裝界面,最后可以得到安裝包的界面如下所示。
以上就是兩種不同方式的安裝包制作的過程,希望能夠幫助您在使用並發布DevExpress程序的時候有所幫助,也就是如果在VS2010上開發,我們可以使用微軟內置的安裝包制作工具,如果是VS2012、VS2013、VS2015等版本上,我們就可以使用InstallShield工具進行安裝包制作了。兩者制作的總體思路和配置信息是差不多的,不過使用界面和方式有所差異,習慣就好。