解决.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();
}
}
}