Iis Inno安装程序安装网站不在根目录中

Iis Inno安装程序安装网站不在根目录中,iis,installation,inno-setup,Iis,Installation,Inno Setup,我已经为一个经典的asp网站创建了一个安装程序。 我成功地在我的“根”(默认网站)中安装了网站。 但我想在现有的“演示”站点中安装exmaple的“站点”下的网站,而不是“根”下的网站 有什么想法吗? 我认为关键在于: WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root'); 我使用一些代码将网站添加到IIS“根目录”,以防需要: if (IISOptionsPage.Values[1] <> '') then begi

我已经为一个经典的asp网站创建了一个安装程序。 我成功地在我的“根”(默认网站)中安装了网站。 但我想在现有的“演示”站点中安装exmaple的“站点”下的网站,而不是“根”下的网站

有什么想法吗? 我认为关键在于:

WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');
我使用一些代码将网站添加到IIS“根目录”,以防需要:

if (IISOptionsPage.Values[1] <> '') then begin
  IISDefAppPool := IISOptionsPage.Values[1];
end else begin
  IISDefAppPool := ExpandConstant('{#IISDefaultAppPool}');  
end;

{ Create the main IIS COM Automation object }
try
  IIS := CreateOleObject('IISNamespace');
except
  RaiseException('IIS is not installed?.'#13#13'(Error: ''' + GetExceptionMessage );
end;

{ Connect to the IIS server }

WebSite := IIS.GetObject('IIsWebService', IISServerName + '/w3svc');
WebServer := WebSite.GetObject('IIsWebServer', IISServerNumber);
WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Root');

WebAppName := ExtractLastDir(ExpandConstant('{app}'));

{ (Re)create a virtual dir }

try
  WebRoot.Delete('IIsWebVirtualDir', WebAppName);
  WebRoot.SetInfo();
except

end;

VDir := WebRoot.Create('IIsWebVirtualDir', WebAppName); 
VDir.AccessRead := True;
VDir.AccessScript := True;
VDir.AppFriendlyName := WebAppName;
VDir.AspEnableParentPaths := True;
VDir.Path := ExpandConstant('{app}');

try
  VDir.AppPoolId := IISDefAppPool;
except
  MsgBox('AppPool not set.'#13#13'(Error: ''' + GetExceptionMessage, mbInformation, mb_Ok);
end;

try
  VDir.AppCreate(True);
except
  MsgBox('App not created.'#13#13'(Error: ''' + GetExceptionMessage, mbInformation, mb_Ok);
end;

try
  VDir.SetInfo();
except
  MsgBox('Info no set.'#13#13'(Error: ''' + GetExceptionMessage, mbInformation, mb_Ok);
end;
if(IISOptionsPage.Values[1]“”)然后开始
IISDefAppPool:=IISOptionsPage.Values[1];
结束,否则开始
IISDefAppPool:=ExpandConstant('{IISDefaultAppPool}');
终止
{创建主IIS COM自动化对象}
尝试
IIS:=CreateOleObject('IISNamespace');
除了
RaiseException('IIS未安装?'#13#13'(错误:'+GetExceptionMessage);
终止
{连接到IIS服务器}
网站:=IIS.GetObject('IIsWebService',IISServerName+'/w3svc');
WebServer:=WebSite.GetObject('IIsWebServer',IISServerNumber);
WebRoot:=WebServer.GetObject('IIsWebVirtualDir','Root');
WebAppName:=ExtractLastDir(ExpandConstant({app}');
{(重新)创建虚拟目录}
尝试
删除('IIsWebVirtualDir',WebAppName);
SetInfo();
除了
终止
VDir:=WebRoot.Create('IIsWebVirtualDir',WebAppName');
VDir.AccessRead:=True;
VDir.AccessScript:=True;
VDir.AppFriendlyName:=WebAppName;
VDir.aspenableparentpath:=真;
路径:=ExpandConstant('{app}');
尝试
VDir.AppPoolId:=IISDefAppPool;
除了
MsgBox('AppPool未设置。#13#13'(错误:'+GetExceptionMessage,mbInformation,mb#U Ok);
终止
尝试
VDir.AppCreate(True);
除了
MsgBox('未创建应用程序'。#13#13'(错误:'+GetExceptionMessage,mbInformation,mb#U Ok);
终止
尝试
VDir.SetInfo();
除了
MsgBox('Info no set.#13#13'(错误:'+GetExceptionMessage,mbInformation,mb#U Ok);
终止

我不擅长COM自动化对象,但如何将“站点”作为参数传入:

VDir := WebRoot.Create('IIsWebVirtualDir', 'Sites\' + WebAppName); 
是否可以在WebRoot.create中创建子目录?我认为值得一试:)

或者第二个想法,传递“站点”:

WebRoot := WebServer.GetObject('IIsWebVirtualDir', 'Sites');