象 asp、asp.net 等諸多基于 web 的應用程序的安裝與部署一直是個麻煩事情,一般都是手工復制、手工修改相關配置文件(主要是數據庫配置),和 windows 上 installer 或 linux 上的 rpm 相比,這種方式顯然一點技術含量都沒有。
對于胖客戶端應用,從很早開始就一直都有較為完善的安裝程序制作工具了,如 installshield、installanywhere、wise installer、swift installer 等等,其中一部分已經實現了跨平臺,可以運行在 windows、linxu、java 等平臺上。
從 visual studio 6.0 開始,microsoft 提供了單獨的 setup tools ,可以用來制作簡易的安裝程序,后來,這個工具被集成到 vs.net 2002/2003 中,并且功能做了一些增強,可以制作自定義的對話框等。其優點是能很好的和 vs.net 的項目進行集成,這樣在整個解決方案(solution)在 build 的時候,就可以生成安裝包,這樣便于實現每日構建(daily build),同時其缺點仍然存在,不能對安裝過程進行更多地控制,提供的對話框功能和類型有限,很少看到有人利用這些對話框實現對系統的一些較為復雜的配置,如絕大多數應用程序中都會涉及的數據庫創建、初始數據的生成等工作。
有很多不錯的安裝工具中,在安裝的過程中就可以對實現對系統進行一些配置,但安裝結束后,如果配置發生改變,例如數據庫遷移等,又變成一件令人頭疼的事情,如果對系統了解較多,知道配置數據的存放位置,就可以手動修改,如果不了解怎么辦?難道要先卸載,再重新安裝來完成新配置?
在很多不錯的胖客戶應用中,配置界面是和安裝界面獨立的,這樣便于在安裝系統后,靈活地調整其配置,那么就把它拿到 asp.net 的安裝程序中吧。
1) 建立解決方案 solution。
2) 建立 web 應用 。
3) 新增一個 winforms 應用 appconfig,增加一個 winform ,完成初始化系統環境,修改系統配置的功能(如生成數據庫、生成初始數據、修改 web.config 中的數據庫連接參數,machine.config 或自定義配置文件)等功能,生成 appconfig.exe 。
4) 新增一安裝項目 setup,除了將 web 應用的的“主輸出”和“內容輸出”加入到項目中,還要將 appconfig 的“主輸出”加入到此項目中。
5) 在 setup 項目中的“自定義操作中”的“安裝”節,增加一自定義操作,使其運行來自于 appconfig 的“主輸出” appconfig.exe。
這樣 asp.net 的安裝程序在運行的最后階段,會運行 appconfig 的 winform 程序,來完成相關的配置,如數據庫等。如果以后配置發生改變,可以直接運行 appconfig.exe 來更改配置。
值得一提的是,由于 appconfig 是 winforms 應用,相對于 installer 的對話框而言,有很大的發揮余地,例如我經常在項目中加入 sql server 管理對象 interop.sqldmo.dll 的引用,這樣可以在輸入/選擇 sql server 的列表框中實現自動列出可用的 sql server 名稱列表,看起來很專業的樣子。
新聞熱點
疑難解答
圖片精選