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