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