成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細剖析VS2003制作安裝過程中的便捷方法

開發(fā) 后端
希望我的一點VS2003制作安裝經(jīng)驗?zāi)芙o大家?guī)韼椭瑢?dǎo)致WebDeployment出錯的原因也許還有很多,不過在你遇到錯誤時,可以先檢查一下你程序中的字符串,暫時把他們置為””,試試看。沒準就是他引起的問題啊。

原來上網(wǎng)我下了很多VS2003制作安裝Demo。而我用的是VS2005,我在使用這些小樣時,基本上絕大部分基于VS2003制作安裝工程都因為少數(shù)文件無法轉(zhuǎn)換而無法加載工程,為此我也苦惱很久,后來終于讓我找到了解決辦法。

1.新建一個空解決方案這個解決方案是為了容納下面幾個項目。

2.新建類庫項目在解決方案下新建類庫項目,這個類庫項目就是要生成的程序集,它會被編譯為一個獨立的dll。但是要把一個程序集放入GAC中,需要給這個程序集賦予一個強名稱的簽名

3.生成加密密鑰對

Sdk帶有一個生成強名稱程序集簽名用的密鑰對的命令sn.exe(可以在C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin目錄下找到),使用下面的命令生成一個密鑰對叫做Testkey.snk,命令如下:

sn -k Testkey.snk

#t#將生成密鑰對拷貝到類庫項目的根目錄下。

編輯類型項目的AssemblyInfo.cs文件,將密鑰文件屬性指向上面那個密鑰對文件

[assembly: AssemblyKeyFile("..\\..\\Testkey.snk")]

這里的路徑是相對于編譯后的項目輸出的位置。

AssemblyInfo.cs中其他的設(shè)置根據(jù)實際需要設(shè)置即可。

一個帶有強名稱的程序集設(shè)計即告完成

4.新建主項目

一般情況都是一個exe的主項目引用一個或者多個dll的類庫項目,我們在解決VS2003制作安裝方案中新建一個主項目,引用上面步驟建立的類庫項目。

項目實現(xiàn)你自己想做的功能。

5.新建一個部署項目

在解決方案中新建一個部署項目。

在部署項目的“文件系統(tǒng)”中,點擊右鍵“添加特殊文件夾”中選擇“Global Assembly Cache Folder文件夾”,這樣在文件系統(tǒng)中新建了一個Global Assembly Cache Folder文件夾,這個文件夾指向系統(tǒng)的GAC目錄。

添加項目輸出,選擇主項目的項目主輸出,主項目的輸出會自動加入到“應(yīng)用程序文件夾”。

再添加項目輸出,選擇類庫項目的主輸出,同樣類庫項目的dll也會被加入到“應(yīng)用程序文件夾”。我們把這個dll從“應(yīng)用程序文件夾”拖到“Global Assembly Cache Folder文件夾”。這樣系統(tǒng)安裝時會把這個dll安裝到GAC了。

6.最后設(shè)置程序目錄和桌面上是否要放置程序的輸出項

7.build部署項目,生成msi

8.在目標機器上安裝這個msi,安裝完畢會在C:\WINDOWS\assembly找到剛才類庫中生成的dll,已經(jīng)作為一個全局程序集加入到GAC中。在GAC中同時能夠看到這個dll的版本,語言和強名稱中的public key的一部分public key token。

在整個過程中有幾點需要特別注意:

1.一般的軟件我們都希望能夠在出了新版本后生成msi在客戶機上安裝能夠自動刪除原先的版本后安裝新版本。同樣vs2003也提供了這樣的選項,在部署項目屬性中RemovePreviousVersion屬性設(shè)置為true,指示系統(tǒng)在安裝之前刪除老版本。

2.如果一個部署項目上ProductName和應(yīng)用文件夾的DefaultLocation不變,則會被認為是同一個程序。部署項目的version和ProductCode和UpgradeCode改變后會被認為同一個程序的版本升級。如果只改變了version沒有同時更改ProductCode和UpgradeCode,會被系統(tǒng)認為還是同一個版本的程序,在已有了原來系統(tǒng)的機器上不能再次安裝。

3.項目中安裝到GAC的dll項目也會同整個軟件一起被安裝被卸載,但是這個dll的版本跟部署項目設(shè)置的版本不同,刪除時系統(tǒng)會根據(jù)msi中帶的dll的程序集的完整標識即程序集名稱、version、cultrue、key token四項來檢查。當msi中的dll的四項跟在GAC中的dll有一項不同,則被認為是不同版本的dll,在升級安裝時不會刪除原來的dll,同時將新版本的dll加入到GAC。

4.在部署項目中加入到GAC的dll需要有個特殊的設(shè)置,就是要把這個dll的屬性中Permanent設(shè)置為ture,表示卸載應(yīng)用程序時是否移除項目輸出文件。這里一定要設(shè)為true,在每次更新安裝時會將沒有改動的dll先從gac刪除然后再安裝進去。如果沒設(shè)為true,程序更新安裝時不會先將gac中的這個dll卸掉,安裝時會把這個dll再安裝一次,結(jié)果發(fā)現(xiàn)gac中有一個跟自己一模一樣的dll,msi就會執(zhí)行一個刪除操作,把這個dll從gac中刪除。最后的結(jié)果就是,項目中的其他部分都更新了,但是這個dll卻沒有了,導(dǎo)致系統(tǒng)不能正常使用。

奇怪的是,項目中其它的文件不需要將Permanent設(shè)置為ture,它也會在升級安裝時先刪除文件,然后安裝新的文件。

責任編輯:chenqingxiang 來源: 中國IT實驗室
相關(guān)推薦

2009-11-26 10:35:16

VS2003制作安裝

2009-12-01 09:30:45

2009-12-09 13:41:04

VS 2003 報錯

2009-12-01 13:50:19

VS2003水晶報表

2009-11-30 13:51:28

2009-12-16 10:15:58

VS2003編譯

2009-11-26 11:30:12

VS2003控件

2009-12-11 13:41:18

2009-11-30 16:50:26

VS2003調(diào)試

2009-11-30 17:40:17

VS2003 ASP

2009-11-25 10:23:57

VS2003環(huán)境

2009-12-01 14:04:17

VS2003 SP

2009-12-01 16:32:20

VS2003安裝步驟

2009-11-25 15:39:24

VS2003 Incl

2009-11-27 10:14:44

2009-11-27 09:53:15

VS2003安裝程序

2009-12-01 16:49:05

VS2003安裝

2009-11-27 10:03:48

VS2003安裝失敗

2010-03-30 10:04:01

Nginx php

2009-12-11 14:38:06

VS2003安裝程序
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久国产区 | 午夜小视频免费观看 | 国外成人在线视频 | 欧美精品v | 久久国产欧美一区二区三区精品 | 欧美高清视频一区 | 毛片免费视频 | 国产欧美精品一区二区 | 国产精品久久久免费 | 九九热在线精品视频 | 正在播放一区二区 | 狠狠涩| 91观看 | 欧美日韩国产一区二区三区 | 黄色网址在线免费观看 | 99久久精品国产一区二区三区 | 欧美视频第二页 | 六月成人网 | 精品日韩一区二区三区av动图 | 免费精品久久久久久中文字幕 | 华人黄网站大全 | 成人精品鲁一区一区二区 | 国产成人免费视频网站视频社区 | 夜夜骚视频 | 午夜a v电影 | 国产成人精品久久二区二区91 | 国产精品美女久久久久久久久久久 | 亚洲精品电影在线观看 | 欧美精品乱码久久久久久按摩 | 亚洲国产精品一区二区三区 | 91福利电影在线观看 | 精品视频一区二区 | 成人午夜看片 | 人人艹人人爽 | 免费观看一级特黄欧美大片 | 日韩成人在线播放 | 欧美一区二区在线视频 | 黄色综合 | 免费网站在线 | 在线中文字幕av | 日韩在线成人 |