其實這個問題不應該放到程序打包這部分講,只不過對于一些初學者而言,在這提下也許會有很大的幫助(想到自己剛學.net那會了,呵呵)。方法之一的話就是先添加一個圖標文件到項目中,然后切換到每個界面設(shè)計器,右鍵窗體的屬性,在屬性窗口有個Icon選項,下面的也就不用多說了吧~
2、 先新建一個空的解決方法,F(xiàn)ile->New->Project->Other Project Types->Visual Studio Solution->Blank Solution,這兒取個名稱SetupDemo:
如圖:
3、在解決方案中添加個項目工程,右鍵上圖中的解決方案,點擊 Add->New Project,選中Windows Form Application模板,輸入SetupForm,結(jié)果如下:
4、給項目添加些基本信息:
在上圖中,右鍵SetupForm后單擊Property或者直接雙擊上圖中的Properties,會出現(xiàn)下圖
左側(cè)很多選項卡,所以可以更改的東西很多,大家可以視需要而定制,這沒必要贅述。大家可以點擊上圖中的Assembly Information 按鈕,添加項目出品公司信息,如下圖所示:
5、本來這應該講添加安裝部署項目了,但是對于在Windows7上開發(fā)的朋友們,還需要加上額外的一部,那就是關(guān)于程序安裝后的權(quán)限問題。大家知道,從Vista開始Windows操作系統(tǒng)便加入了UAC機制,所以問題就出現(xiàn)了:如果我們制作的程序被安裝到了系統(tǒng)盤了會怎樣?有心的會發(fā)現(xiàn),當程序進行一些諸如IO操作的時候,這些都會被操作系統(tǒng)要求以管理員權(quán)限運行,否則所有的操作會被系統(tǒng)拒絕。
如果直接進入安裝部署項目的操作的話,這樣打包出來的安裝包即便你以管理員權(quán)限運行安裝了。但是,出現(xiàn)在桌面上的圖標快捷鍵右鍵時候卻沒有“以管理員權(quán)限運行這一選項”,除非你直接切換到安裝目錄,右鍵exe文件以管理員權(quán)限啟動~
解決方法是,右鍵SetupForm項目,添加一個應用程序描述文件,如下圖:
直接點擊添加即可,這時候打開文件會出現(xiàn)以下內(nèi)容:
想必不用多說了吧,把 level="asInvoker" 按調(diào)用者權(quán)限 改成 level="requireAdministrator"管理員權(quán)限就OK啦。
建議將該文件拖入Properties目錄下,如下所示:
6、添加安裝部署項目,右鍵解決方案后Add->New Project->Other Project Types->Setup and Deployment,輸入MySetup后確定,結(jié)果如下:
7、右鍵上圖中的MySetup->View->File System,確定后如下圖
解釋下上圖中幾個文件夾的意義:
Application Folder——所有的項目的Release文件夾或Debug文件夾下的資源文件、可執(zhí)行程序以及描述性文件等都需要放到這
User‘s Desktop——用戶桌面,在這下添加快桌面捷鍵,安裝完了會在用戶桌面產(chǎn)生快捷鍵
User's Programs Menu——用戶開始菜單,也是添加快捷鍵的地方,不過是在用戶開始菜單,多個項目打包在一塊的話,最好在該文件夾下建個文件夾
好了,一步步來
1)Application Folder
先是右鍵Application Folder->Add ->Project output,出現(xiàn)以下的窗口:
由于只有一個項目,所以上面的下拉菜單中只有SetupForm一個選項,這兒我們選擇Primary output,即可。
當然,如果項目中的文件種類比較多,你也可以右鍵Application Folder->Add->File,然后瀏覽到項目的目錄,將項目的Release或Debug文件夾里面的東西一股腦兒的添加進來~
2)User's Desktop
在右側(cè)分割的窗口中右鍵->Create New Shortcut,在出現(xiàn)的窗口中雙擊Application Folder,選中剛剛添加那個Project Output文件即可。這時候安裝到桌面時候快捷鍵圖標還是默認圖標,如果定制自己的圖標的話,則需要在右鍵剛剛建立的快捷鍵,到屬性窗口有個Icon屬性,單擊瀏覽,如下所示:
單擊Browse Icon選擇窗體
雙擊Application Folder,如果在第 1)步驟中你添加了Icon文件的話,可以看到這些圖標并可以選擇,沒有的話那就回到步驟1)添加唄~
3)User's Programs Menu
步驟同上,不過需要提醒的是多個項目打成一個安裝包的時候,這下面最好先建個文件夾然后再添加那幾個快捷鍵~
8、到這一步,便可以右鍵MySetup后Build下,然后找到MySetup目錄下的Release或者Debug文件下,便會有安裝包啦~
9、沒完呢,要想添加個卸載程序怎么辦呢?
方法:在7中的第1)步驟,給Application Folder還得添加個東西,右鍵Application Folder->Add->File,然后在你的系統(tǒng)盤下的Windows/System32目錄下添加 msiexec.exe,該文件是什么想必不用多說了把~添加了后,關(guān)鍵是在開始菜單下添加個刪除的快捷鍵~于是,在7中的第3)步驟中添加的文件夾下,再創(chuàng)建一個快捷鍵,命名為Uninstall,如下:
右鍵Uninstall快捷鍵,打開其屬性窗口,有個Arguments屬性,如下所示:
輸入 /x 安裝包的Productcode,這個ProductCode怎么獲得呢,方法是左鍵單擊MySetup安裝包項目,然后點擊屬性窗口,會在該窗口找到Product code 屬性,將該code復制到/x 后面即可,下圖:
這時候卸載功能已經(jīng)添加進去了~
10、還沒完呢,如果想要安裝程序在安裝時候或者卸載的時候打開瀏覽器定位到指定的網(wǎng)址怎么辦?
這個問題本人只在XP系統(tǒng)下解決了,win7系統(tǒng)下貌似不起作用,囧~期待園友的解決方案
說說在XP下怎么解決的把:
大家右鍵部署項目MySetup->View->Custom Actions 選項,如下所示:
出現(xiàn)Custom Actions編輯界面:
以上是程序安裝部署到卸載的四個階段,每個階段都可以添加執(zhí)行exe、dll或者vbs類型的命令,由此看來至少可以有三種方法實現(xiàn)~下面我便用后兩種分別完成這個功能~
1)VBS腳本
新建個腳本,內(nèi)容如下:
Set openWeb=CreateObject("Wscript.shell")
openWeb.run("www.cnblogs.com/royenhome")
保存為Internet.vbs,然后將該腳本添加到Application Folder,在Custom Actions編輯界面的相應階段將該腳本添加進去~添加方法,呵呵,不用多說了把~
2)dll方法
在解決方案下新建個類庫項目,取名為OpenWebDll,如圖:
刪除class1.cs,然后給類庫添加個Intaller類,如下所示:
該類繼承了Installer類,我們打開添加的類文件,在文件中override相應的方法,如希望在卸載時候打開網(wǎng)址,如下所示:
Build下該類庫,然后在MySetup的Application Folder文件夾下添加該項目的Project Output,然后切換到Custom Actions編輯界面的Uninstall添加該Output,同時確保Install下也添加該Output文件,否則安裝會提示找不到xxx.installstate文件~具體操作見下圖:
Build下就OK了
11、至此,本文真的完了~