日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学习:Web安装项目创建桌面快捷方式及重写安装类(转)

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习:Web安装项目创建桌面快捷方式及重写安装类(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、WEB安裝項目部署

1、新建:

新建項目-安裝和部署項目-WEB安裝項目

2、部署:

(1)進入文件系統視圖,"項目-右鍵-視圖-文件系統";也可以直接點"解決方案資源管理器"上部的快捷圖標
(2)
"WEB應用程序文件夾"添加文件,例如aspx文件,ico文件,bin目錄及文件,images目錄及文件等
(3)
設置虛擬目錄屬性,右擊"WEB應用程序文件夾"選屬性,一般只須修改默認文檔"defaultdocument"以及虛擬目錄名"VirtualDirectorly"(若有多個虛擬目錄
(4)Web
安裝項目默認沒有提供"用戶的程序菜單",需要自己創建:右擊"目標計算機上的文件系統-添加特殊文件夾-用戶的程序菜單"
(5)Web
安裝項目默認也沒有用戶桌面目錄,添加方法同上
右擊"目標計算機上的文件系統-添加特殊文件夾-WEB自定義文件夾",逐次添加多個,但需要指出的是,這些多的虛擬目錄只能在設計時設置好名稱等屬性,而在安裝過程中卻無從控制)

補充:

web項目部署時,添加網站有兩種方式:
把你的網站先發布,然后把發布后的頁面一一添加進來同時把諸如images之類的文件夾要在安裝部署項目中文件夾然后再添加其下文件
在安裝部署項目中添加項目輸出,選擇你的網站,但這樣做部署項目會把你網站所有文件包括.cs文件原樣打包進去,不太好

二、重寫安裝類:

1、作用:

安裝類是在安裝部署項目被生成后,在被"安裝","提交","回滾","卸載"的過程中來完成一些自定義的操作

2、創建:

(1)新建一個類庫項目
(2)
刪掉類庫中原有類文件,新建一個"安裝程序類"("添加新項"中有這個模版的)
(3)
自定義方法:這個安裝類特殊就在于引用了System.Configuration.Install.dllusing System.Configuration.Install和繼承:Installer
在自定義方法中主要是對Install,Uninstall,Commit,Rollback方法進行override重寫

3、使用:

創建完后,還不起效,要和安裝部署項目配合才得以使用

方法一:

(1)在安裝部署項目中將剛才類庫項目添加為"項目輸出-主輸出"
(2)
在安裝部署項目"視圖-自定義操作""安裝","提交","回滾","卸載"等操作上"右鍵-添加自定義操作"選擇剛才添加的類庫項目輸出

方法二:

(1)將類庫進行編譯,生成.dll
(2)
在安裝部署項目"視圖-自定義操作""安裝","提交","回滾","卸載"等操作上"右鍵-添加自定義操作"選擇文件,瀏覽到你編譯生成的.dll

至此,你所寫的安裝類將在"安裝","卸載","回滾","提交"過程中起效了!

三、為Web安裝項目添加桌面快捷方式及圖標

1Web安裝項目特殊于一般的安裝部署項目:

(1)Web安裝項目無法在自身加入的網站項目中創建快捷方式,可以借助創建.url文件方式來創建(:.lnk也是快捷方式文件,但安裝部署項目不允許添加.lnk文件,卻可以添加.url文件)
(2)Web
安裝項目默認沒有用戶桌面和用戶程序菜單的添加,"文件系統視圖-右鍵-添加特殊文件夾-***"中添加一些特殊操作
(3)Web
安裝項目在安裝過程中用戶自己動態設置"虛擬目錄",所以.url文件中不能先前定死http://localhost/***,只能通過"安裝類"在自定義"安裝"操作時動態創建

2、創建"安裝類"并添加到Web安裝項目的"自定義操作""安裝"

內容如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Configuration.Install;

?

using System.IO;

using System.DirectoryServices;//操作IIS虛擬目錄

?

namespace TestInstallCLB

{

??? [RunInstaller(true)]

??? public partial class Installer2 : Installer

??? {

??????? public Installer2()

??????? {

??????????? InitializeComponent();

??????? }

??????? public override void Install(System.Collections.IDictionary stateSaver)

??????? {

??????????? // 創建桌面快捷方式及圖標,借助.url生成網絡快捷方式

?

??????????? // 先進行安裝,因為安裝后才會有安裝目錄

??????????? base.Install(stateSaver);??

?

??????????? //獲取軟件安裝的物理目錄,形如:D:\Inetpub\wwwroot\Endy_Web\InstallClass.dll

??????????? string fname = System.Reflection.Assembly.GetExecutingAssembly().Location;

?

??????????? //也可以獲取軟件安裝的物理目錄,和上面獲取的結果一樣,形如:D:\Inetpub\wwwroot\Endy_Web\InstallClass.dll

??????????? //string fname2 = Context.Parameters["assemblypath"];

?

??????????? string[] sz = fname.Split(new char[] { '\\' });

??????????? StreamWriter sw = new StreamWriter(File.Open(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\測試站點.url", FileMode.Create, FileAccess.Write));

??????????? sw.WriteLine("[InternetShortcut]");

??????????? sw.WriteLine("URL=http://localhost/" + sz[sz.Length - 2]);

??????????? sw.WriteLine("IconFile=" + fname.Substring(0, fname.LastIndexOf("\\")) + "\\logo.ico");

??????????? sw.WriteLine("IconIndex=0");

??????????? sw.Flush();

??????????? sw.Close();

?

??????????? //創建用戶"程序"菜單快捷方式及圖標,借助.url生成網絡快捷方式(要和界面添加的用戶程序目錄一致)

??????????? /*處理"開始-程序"目錄的位置,因為默認SpecialFolder.Programs會到當前用戶的程序目錄下,而我們要處理到All User的程序目錄下,

??????????? 因為在web部署項目中添加卸載快捷方式時,我們在"文件系統視圖-右鍵-添加特殊文件夾-用戶的'程序'菜單"是添加到All User的程序目錄下的,所以下面用程序創建的要和界面添加的保持一致,

??????????? 同時當添加到All User的程序目錄下,那么所有用戶的程序菜單中都會有的*/

??????????? string str = Environment.GetFolderPath(Environment.SpecialFolder.Programs);

??????????? string[] arr = str.Split(new char[] { '\\' });

??????????? arr[arr.Length - 3] = "All Users";

??????????? string t = "";

??????????? foreach (string i in arr)

??????????? {

??????????????? t += i + "\\";

??????????? }

?

??????????? StreamWriter swr = new StreamWriter(File.Open(t + "測試站點.url", FileMode.Create, FileAccess.Write));

??????????? swr.WriteLine("[InternetShortcut]");

??????????? swr.WriteLine("URL=http://localhost/" + sz[sz.Length - 2]);

? ??????????swr.WriteLine("IconFile=" + fname.Substring(0, fname.LastIndexOf("\\")) + "\\logo.ico");

??????????? swr.WriteLine("IconIndex=0");

??????????? swr.Flush();

??????????? swr.Close();

?

??????? }

?

??????? public override void Uninstall(System.Collections.IDictionary savedState)

??????? {

??????????? base.Uninstall(savedState); // 先進行卸載

??????????? //刪除虛擬目錄[有問題不能用]

??????????? //System.DirectoryServices.DirectoryEntry dirroot = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT");

??????????? //DirectoryEntry Dirport = dirroot.Children.Find("Endy_Web","IIsVirtualDir");

??????????? //Dirport.Invoke("AppDelete", true);

??????????? //dirroot.CommitChanges();

??????????? //刪除安裝文件夾[有問題不能用]

??????????? //string fname = Context.Parameters["assemblypath"];

????? ??????//if (Directory.Exists(fname.Substring(0, fname.LastIndexOf("\\"))))

??????????? //{

??????????? //??? DirectoryInfo di=new DirectoryInfo(fname.Substring(0, fname.LastIndexOf("\\")));

??????????? //??? foreach (FileInfo f in di.GetFiles())

????????? ??//??????? f.Delete();

??????????? //??? di.Delete();

??????????? //}

?

??????? }

??? }

}

四、url文件內容

最后客戶端安裝完畢后桌面生成快捷方式("我的測試軟件.url"實際上是看不到擴展名的)用記事本打開內容如下:
[InternetShortcut]
URL=http://localhost/EndyWeb
IconFile=C:\Inetput\wwwroot\EndyWeb\logo.ico
IconIndex=0

?


文章來源:http://hi.baidu.com/xtuwangzhi/blog/item/472217475dbef80f6a63e5f6.html


轉載于:https://www.cnblogs.com/LeimOO/archive/2009/09/03/1559274.html

總結

以上是生活随笔為你收集整理的学习:Web安装项目创建桌面快捷方式及重写安装类(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。