![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/d385645e832d1ebc2a9831c8bd232e69.png)
2. 添加安裝類。在新建的Library里面添加一個(gè) Installer Class,名字我暫時(shí)定為MyInstallerClassDll
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/a9772ba807825b6673afa335618bee44.png)
3. 重寫基類的函數(shù)
Commit
Install
OnAfterInstall
OnAfterRollback
OnAfterUninstall
OnBeforeInstall
OnBeforeRollback
OnBeforeUninstall
OnCommitted
OnCommitting
Rollback
Uninstall
每個(gè)函數(shù)對(duì)應(yīng)的是安裝過程中的不同時(shí)期。
我暫時(shí)重寫了Commit函數(shù),但是還沒有自己的實(shí)現(xiàn)。
public override void Commit(System.Collections.IDictionary savedState)
{
base.Commit(savedState);
}
4. 新建一個(gè)setup工程,在Other Project Types里面,并且下拉框選中Add to Solution。我暫時(shí)命名為setup. 當(dāng)然這個(gè)前提是你有一個(gè)想安裝的程序。 或者有你想制作安裝程序的編譯后的文件。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/5186a54564c88d84a41d86f30f700212.png)
5. 添加源程序文件。
切換Setup工程的視圖為File System
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/bb06221101a922f59a4410f0857f87bc.png)
左鍵點(diǎn)擊Application Folder.這個(gè)文件夾就是放源程序文件的。User’s Desktop是放桌面快捷方式的,User’s Programs Menu是定義開始菜單的。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/30be7217bf3dc7a946970a5eb062c8b1.png)
在右邊空白的地方右鍵選中添加項(xiàng)目輸出文件
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/85255338f7a46fa990c123d36e2ada80.png)
下面下來列表選中你要安裝的程序,比如我要安裝的是 WpfSetup。按住Ctrl鍵選中Primary output和 Contetn Files,點(diǎn)擊OK鍵。這樣就把需要安裝的程序的編譯后的主要文件都添加進(jìn)來了。當(dāng)然也可以手動(dòng)添加進(jìn)來如上圖選中Add->File然后瀏覽到你的release或者是debug后的文件夾,然后選中主要文件添加進(jìn)來。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/dca8a43466b0ce621696e0ea00dd7be4.png)
6. 創(chuàng)建快捷方式。在剛剛添加的Primary output from WpfSetup(Active) 上面點(diǎn)擊右鍵,選擇創(chuàng)建快捷方式,然后重命名。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/83cebc5a4f49c4136e24c10ad07774e0.png)
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/add82bd18a8c331ca989aa6c47316d13.png)
把這個(gè)重命名的文件用鼠標(biāo)左鍵托到User’s Desktop文件夾里面,這樣的話就會(huì)在桌面上面生成一個(gè)快捷方式,然后再自定義開始菜單的結(jié)構(gòu),安裝通常的做 法,我們?cè)赨ser’s Programs Menu文件夾里面新建一個(gè)文件夾用于放置我們安裝卸載以及幫助手冊(cè)之類的快捷方式。我定 義的文件夾是WPFSample,快捷方式的添加參照User’s Desktop里面快捷 方式的添加。
這樣的話安裝程序的文件結(jié)構(gòu)已經(jīng)完成了。
7. 設(shè)置系統(tǒng)必備屬性。
在setup工程上面點(diǎn)擊右鍵選擇屬性。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/1a3c594da80669b54925be1f6ff06e43.png)
點(diǎn)擊 Prerequisites,在彈出的對(duì)話框里面選擇如下圖所示的選項(xiàng),一定要選擇Download prerequisites from the same location as my application. 當(dāng)然你也可以根據(jù)你的SDK選擇不不同的版本。如果你選擇的是3.5 Sp1。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/28fc43a9bbc53622878b17c359b4ee93.png)
如果在編譯的過程中出現(xiàn)了The install location for prerequisites has not been set to 'component vendor's web site' and the file 'dotNetFx35setup.exe' in item 'Microsoft.Net.Framework.3.5.SP1' cannot be located on disk.這樣的錯(cuò)誤你就需要進(jìn)行如下操作:
1. 打開[Program Files]/Microsoft SDKs/Windows/v6.0A/Bootstrapper/Packages/
DotNetFx35SP1 文件夾,在x64 操作系統(tǒng)上是 %ProgramFiles(x86)% /Microsoft SDKs/Windows/v6.0A/Bootstrapper/Packages/DotNetFx35SP1
2. 修改Product.xml文件,在<PackageFiles>節(jié)點(diǎn)里面添加下 列內(nèi)容,然后保存。
<PackageFile Name="TOOLS/clwireg.exe" />
<PackageFile Name="TOOLS/clwireg_x64.exe" />
<tPackageFile Name="TOOLS/clwireg_ia64.exe" />
3. 打開這個(gè)網(wǎng)址http://go.microsoft.com/fwlink?LinkID=118080,下載dotNetFx35.exe
4. 打開命令提示符窗口(DOS窗口),并且進(jìn)入你下載的dotNetFx35.exe的文件夾
5. 執(zhí)行下面這個(gè)命令dotNetFx35.exe /x:。注意/x后面有個(gè)冒號(hào)呢。
6. 把解壓后的WCU/dotNetFramework里面的文件(如下圖)拷貝到上面路徑提到的DotNetFx35SP1文件夾下面
如果還有問題
1. 在Product.xml找到 <PackageFile Name="dotNetFX30/XPSEPSC-x86-en-US.exe" 然后修改 PublicKey 的值為: 3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9 706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E39589 77609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B6 6B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001
2.找到<PackageFile Name="dotNetFX30/XPSEPSC-amd64-en-US.exe" 按照上面的步驟修改。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/42ca1ae8dadcd9693285fd4dede4cce2.png)
8.設(shè)置安裝程序的屬性
在setup工程上面右鍵點(diǎn)擊選擇屬性。如下圖。可以選擇需要修改的屬性,比如語言,作者和制造商以及安裝程序的名字等等。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/dc1bb6ece2830a02d48e141d0fc889ec.png)
9.Rebuild 這個(gè)安裝部署工程,然后在debug或者release文件里面找到安裝文件,比如我的是WPFSample.msi. 雙擊就可以運(yùn)行了。
10. 自定義安裝界面
在setup工程上面點(diǎn)擊右鍵選擇用戶界面視圖
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/61c01f71d776a92472d7a05cf4fa2e2e.png)
打開后如下圖,可以看到安裝分 下面三個(gè)部分,Start, Progress, End.我們可以在任意一個(gè)部分添加任意一個(gè)窗口。有些窗口需要用戶輸入?yún)?shù)的,這樣的話就需要在后臺(tái)獲得這些 參數(shù),這樣就需要我們開始建立的CustomAction類了。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/1cc46d7ec385727e7d8715f9f6dc7cdb.png)
11. 自定義安裝行為,選中一個(gè)你添加的對(duì)話框,比如我選中的是TextBoxes (A),它有四個(gè)輸入框
我只需要兩個(gè)所以第三個(gè)和第四 個(gè)的Visible屬性都是false. 然后定義第一個(gè)和第二個(gè)輸入框的屬性名字,我定義的是NAME和PASSWORD。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/bf2de3b8fb64b5c2960544e8f400b845.png)
切換到Customs Actions視圖
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/bedd3350e10e4610a7c261c0baf7bc04.png)
在Install和Commit文件上面右鍵添加上面定義的那個(gè)Custom Action.當(dāng)然這個(gè)Primary output已經(jīng)添加到了Application Folder里面了(添加方法參照上文)。這個(gè)也可以就是那個(gè)工程的.dll文件。
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/a56350d52681afb65ddbcd8caff15341.png)
選擇Install或者Commit文件里面的CustomAction文件,查看屬性
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/a506457093f96d1bd8cb2383741aae68.png)
在CustomActionData屬性里面輸入?yún)?shù)名稱和值例如/name=[NAME]這個(gè)表達(dá)式的意思就是定義一個(gè)變量名字是name值是前面添加的那個(gè)對(duì)話框的屬性名稱并用[]括起來。這樣就可以在自定義安裝類里面得到了。方法如下:
string name = this.Context.Parameters["name"].ToString();
string pass = this.Context.Parameters["password"].ToString();
這樣就得到了輸入框的值。然后 在進(jìn)行一些邏輯操作。也可以拋出一個(gè)異常來終止安裝過程,并回滾。
throw new Exception("Invalidate name");
回滾和卸載的程序我們也可以自定義,道理都是一樣的 。
12. 實(shí)現(xiàn)卸載
找到msiexec.exe這個(gè)文件,通常在C:/WINDOWS 下面
添加到Application Folder里面修改名字為Uninstall.exe(也可以不修改)。
創(chuàng)建快捷方式,移到User’s Programs Menu下 面的自定義的那個(gè)文件夾下面如WPFSample文件下面
然后打開屬性窗口,設(shè)置Arguments值為 /x ProductCode ![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/8acae1e28cd585d36c03d4fcf5dad26c.png)
這個(gè)ProductCode值在 Setup工程的屬性頁可以看到
![vs2008安裝部署工程制作教程[圖文] vs2008,安裝部署](/d/file/p/2020/06-28/f48b756dcd430d8874b1aeecfa7adac6.png)
這樣就完成了卸載程序了。
新聞熱點(diǎn)
疑難解答
圖片精選