解决.NET(WebApplication)安装部署的不能选择安装路径的问题

 

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


 }

}



posted on 2006-08-09 13:17  Ameng  阅读(365)  评论(0)    收藏  举报