

其實(shí)這個(gè)問(wèn)題不應該放到程序打包這部分講,只不過(guò)對于一些初學(xué)者而言,在這提下也許會(huì )有很大的幫助(想到自己剛學(xué).net那會(huì )了,呵呵)。方法之一的話(huà)就是先添加一個(gè)圖標文件到項目中,然后切換到每個(gè)界面設計器,右鍵窗體的屬性,在屬性窗口有個(gè)Icon選項,下面的也就不用多說(shuō)了吧~
2、 先新建一個(gè)空的解決方法,File->New->Project->Other Project Types->Visual Studio Solution->Blank Solution,這兒取個(gè)名稱(chēng)SetupDemo:
如圖:

3、在解決方案中添加個(gè)項目工程,右鍵上圖中的解決方案,點(diǎn)擊 Add->New Project,選中Windows Form Application模板,輸入SetupForm,結果如下:

4、給項目添加些基本信息:
在上圖中,右鍵SetupForm后單擊Property或者直接雙擊上圖中的Properties,會(huì )出現下圖

左側很多選項卡,所以可以更改的東西很多,大家可以視需要而定制,這沒(méi)必要贅述。大家可以點(diǎn)擊上圖中的Assembly Information 按鈕,添加項目出品公司信息,如下圖所示:

5、本來(lái)這應該講添加安裝部署項目了,但是對于在Windows7上開(kāi)發(fā)的朋友們,還需要加上額外的一部,那就是關(guān)于程序安裝后的權限問(wèn)題。大家知道,從Vista開(kāi)始Windows操作系統便加入了UAC機制,所以問(wèn)題就出現了:如果我們制作的程序被安裝到了系統盤(pán)了會(huì )怎樣?有心的會(huì )發(fā)現,當程序進(jìn)行一些諸如IO操作的時(shí)候,這些都會(huì )被操作系統要求以管理員權限運行,否則所有的操作會(huì )被系統拒絕。
如果直接進(jìn)入安裝部署項目的操作的話(huà),這樣打包出來(lái)的安裝包即便你以管理員權限運行安裝了。但是,出現在桌面上的圖標快捷鍵右鍵時(shí)候卻沒(méi)有“以管理員權限運行這一選項”,除非你直接切換到安裝目錄,右鍵exe文件以管理員權限啟動(dòng)~
解決方法是,右鍵SetupForm項目,添加一個(gè)應用程序描述文件,如下圖:

直接點(diǎn)擊添加即可,這時(shí)候打開(kāi)文件會(huì )出現以下內容:

想必不用多說(shuō)了吧,把 level="asInvoker" 按調用者權限 改成 level="requireAdministrator"管理員權限就OK啦。
建議將該文件拖入Properties目錄下,如下所示:

6、添加安裝部署項目,右鍵解決方案后Add->New Project->Other Project Types->Setup and Deployment,輸入MySetup后確定,結果如下:

7、右鍵上圖中的MySetup->View->File System,確定后如下圖

解釋下上圖中幾個(gè)文件夾的意義:
Application Folder——所有的項目的Release文件夾或Debug文件夾下的資源文件、可執行程序以及描述性文件等都需要放到這
User‘s Desktop——用戶(hù)桌面,在這下添加快桌面捷鍵,安裝完了會(huì )在用戶(hù)桌面產(chǎn)生快捷鍵
User's Programs Menu——用戶(hù)開(kāi)始菜單,也是添加快捷鍵的地方,不過(guò)是在用戶(hù)開(kāi)始菜單,多個(gè)項目打包在一塊的話(huà),最好在該文件夾下建個(gè)文件夾
好了,一步步來(lái)
1)Application Folder
先是右鍵Application Folder->Add ->Project output,出現以下的窗口:

由于只有一個(gè)項目,所以上面的下拉菜單中只有SetupForm一個(gè)選項,這兒我們選擇Primary output,即可。
當然,如果項目中的文件種類(lèi)比較多,你也可以右鍵Application Folder->Add->File,然后瀏覽到項目的目錄,將項目的Release或Debug文件夾里面的東西一股腦兒的添加進(jìn)來(lái)~
2)User's Desktop
在右側分割的窗口中右鍵->Create New Shortcut,在出現的窗口中雙擊Application Folder,選中剛剛添加那個(gè)Project Output文件即可。這時(shí)候安裝到桌面時(shí)候快捷鍵圖標還是默認圖標,如果定制自己的圖標的話(huà),則需要在右鍵剛剛建立的快捷鍵,到屬性窗口有個(gè)Icon屬性,單擊瀏覽,如下所示:


單擊Browse Icon選擇窗體

雙擊Application Folder,如果在第 1)步驟中你添加了Icon文件的話(huà),可以看到這些圖標并可以選擇,沒(méi)有的話(huà)那就回到步驟1)添加唄~
3)User's Programs Menu
步驟同上,不過(guò)需要提醒的是多個(gè)項目打成一個(gè)安裝包的時(shí)候,這下面最好先建個(gè)文件夾然后再添加那幾個(gè)快捷鍵~
8、到這一步,便可以右鍵MySetup后Build下,然后找到MySetup目錄下的Release或者Debug文件下,便會(huì )有安裝包啦~
9、沒(méi)完呢,要想添加個(gè)卸載程序怎么辦呢?
方法:在7中的第1)步驟,給Application Folder還得添加個(gè)東西,右鍵Application Folder->Add->File,然后在你的系統盤(pán)下的Windows/System32目錄下添加 msiexec.exe,該文件是什么想必不用多說(shuō)了把~添加了后,關(guān)鍵是在開(kāi)始菜單下添加個(gè)刪除的快捷鍵~于是,在7中的第3)步驟中添加的文件夾下,再創(chuàng )建一個(gè)快捷鍵,命名為Uninstall,如下:


右鍵Uninstall快捷鍵,打開(kāi)其屬性窗口,有個(gè)Arguments屬性,如下所示:

輸入 /x 安裝包的Productcode,這個(gè)ProductCode怎么獲得呢,方法是左鍵單擊MySetup安裝包項目,然后點(diǎn)擊屬性窗口,會(huì )在該窗口找到Product code 屬性,將該code復制到/x 后面即可,下圖:

這時(shí)候卸載功能已經(jīng)添加進(jìn)去了~
10、還沒(méi)完呢,如果想要安裝程序在安裝時(shí)候或者卸載的時(shí)候打開(kāi)瀏覽器定位到指定的網(wǎng)址怎么辦?
這個(gè)問(wèn)題本人只在XP系統下解決了,win7系統下貌似不起作用,囧~期待園友的解決方案
說(shuō)說(shuō)在XP下怎么解決的把:
大家右鍵部署項目MySetup->View->Custom Actions 選項,如下所示:

出現Custom Actions編輯界面:

以上是程序安裝部署到卸載的四個(gè)階段,每個(gè)階段都可以添加執行exe、dll或者vbs類(lèi)型的命令,由此看來(lái)至少可以有三種方法實(shí)現~下面我便用后兩種分別完成這個(gè)功能~
1)VBS腳本
新建個(gè)腳本,內容如下:
Set openWeb=CreateObject("Wscript.shell")
openWeb.run("www.cnblogs.com/royenhome")
保存為Internet.vbs,然后將該腳本添加到Application Folder,在Custom Actions編輯界面的相應階段將該腳本添加進(jìn)去~添加方法,呵呵,不用多說(shuō)了把~
2)dll方法
在解決方案下新建個(gè)類(lèi)庫項目,取名為OpenWebDll,如圖:

刪除class1.cs,然后給類(lèi)庫添加個(gè)Intaller類(lèi),如下所示:

該類(lèi)繼承了Installer類(lèi),我們打開(kāi)添加的類(lèi)文件,在文件中override相應的方法,如希望在卸載時(shí)候打開(kāi)網(wǎng)址,如下所示:

Build下該類(lèi)庫,然后在MySetup的Application Folder文件夾下添加該項目的Project Output,然后切換到Custom Actions編輯界面的Uninstall添加該Output,同時(shí)確保Install下也添加該Output文件,否則安裝會(huì )提示找不到xxx.installstate文件~具體操作見(jiàn)下圖:


Build下就OK了
11、至此,本文真的完了~
聯(lián)系客服