解決.NET(WebApplication)安裝部署的不能選擇安裝路徑的問題
2024-07-10 13:05:31
供稿:網友
 
(一)說明
 webapplication安裝部署時,不能選擇安裝路徑;解決思路:
 (1)創建一個控制臺應用程序createwebdir.exe ,作用是創建 web 虛擬目錄。
 (2)安裝部署制作采用windows application安裝部署,不是webapplication安裝
 部署。因為windows application安裝部署有選擇路徑的操作,選擇的路徑
 保存在 [targetdir]。
 (3)在安裝部署制作—“自定義操作”中[提交]下添加自定義操作,選擇createwebdir.exe,其屬性:
 (a)arguments = bug2000 [targetdir] ,即createwebdir.exe傳入兩個
 參數。bug2000指web 虛擬目錄;[targetdir]指物理目錄。
 (b)installerclass = false,設置為非projectinstaller類
(二)創建一個控制臺應用程序createwebdir.exe 
 (1) main.cs 
 (2)createwebdir.cs 見《iis控制管理--web虛擬目錄的創建及管理》 
 (3)inifile.cs 見《ini文件的操作(asp.net+c#)》
(三)main.cs 文件
using system;
using system.io;
using system.directoryservices;
using system.runtime.interopservices;
namespace createwebdir
{
 /// <summary>
 /// class1 的摘要說明。
 /// </summary>
 class start
 {
 /// <summary>
 /// 應用程序的主入口點。
 /// 參數 args :
 /// args[0] :虛擬路徑
 /// args[1] :物理路徑
 /// args[2] :服務器名,可以不輸入,默認 localhost
 /// 
 /// 運行示例:
 /// createwebdir.exe virdirtest d:/work
 /// createwebdir.exe virdirtest d:/work deve-server
 /// </summary>
 [stathread]
 static void main(string[] args)
 {
 int i; 
 string inifile;
 if (args.length > 1)
 {
 inifile = args[1];
 if (inifile.substring(inifile.length-1,1)=="//")
 inifile = args[1]+"bug2004.ini";
 else
 inifile = args[1]+"//bug2004.ini";
 }
 else
 inifile = @"c:/bug2004.ini";
 //string inifile = @"d:/bug2000.ini";
 if (!file.exists(inifile))
 {
 using (filestream fs = file.create(inifile))
 {
 fs.close();
 }
 }
 inifile myini = new inifile(inifile);
 for(i=0;i<args.length;i++)
 {
 myini.iniwritevalue("webdir","arg"+i.tostring(),args[i]);
 }
 
 string sserver = "localhost";
 if (args.length > 2) sserver= args[2];
 iismanager iismg = new iismanager(sserver);
 iismg.connect();
 
 if (iismg.exists(args[0]))
 {
 console.write(args[0]+ " is exist!");
 myini.iniwritevalue("webdir","webdirexist","true");
 }
 else
 {
 myini.iniwritevalue("webdir","webdirexist","false");
 iismg.get_anonymoususer();
 string[] anonymoususer = new string[2];
 anonymoususer[0] = iismg.anonymoususername ;
 anonymoususer[1] = iismg.anonymoususerpass ;
 virtualdirectory newvirdir = new virtualdirectory(args[0],args[1],anonymoususer);
 if (iismg.create(newvirdir))
 {
 console.write(args[0]+ " 創建成功!");
 myini.iniwritevalue("webdir","webdircreated","true");
 }
 else
 {
 console.write(args[0]+ " 創建不成功!");
 myini.iniwritevalue("webdir","webdircreated","false");
 }
 }
 iismg.close();
 }
 }
}