(一)说明 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(); }
} }

|