문제

IIS 6 이상에는 다음과 같은 유틸리티 스크립트가 함께 제공됩니다. ADSUTIL.VBS:

Adsutil.vbs는 ADSI (Active Directory Service Interfaces)와 함께 Microsoft Visual Basic Scripting Edition (VBSCRIC)을 사용하여 IIS 구성을 조작하는 IIS 관리 유틸리티입니다.이 스크립트는 Windows 스크립트 호스트와 함께 설치된 Cscript를 사용하여 실행해야합니다.

즉, 이 도구를 사용하면 IIS 메타베이스 명령줄에서 프로그래밍 방식으로 설정합니다.

IIS의 일부 구성을 변경하기 위해 InstallShield 프로젝트에서 이 도구를 호출하고 싶습니다.스크립트를 다시 배포하는 것이 합법적인지(소스 내부에는 법적 문구가 없음) 다음을 통해 명령을 실행하는 것이 합법적인지 궁금합니다.

CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs

그리고 해당 위치의 디스크에 스크립트가 존재하기를 바랍니다.

그래서 내 질문은 - 머신의 일부 다른 웹사이트(inetpub 루트)가 시스템 드라이브가 아닌 곳에 있더라도 위 경로에 항상 존재합니까?ADSUTIL 도구를 참조하는 모든 MSDN 및 기타 Microsoft KB 문서에서는 위의 %SYSTEMDRIVE% 경로를 사용하여 이를 수행하는 것 같습니다.

나는 적어도 그것을 본다 이 문제를 해결하기 위한 또 다른 시도 InstallShield 프로젝트와 함께 cscript.exe 및 Adsutil.vbs를 모두 배포합니다.

아마도 Inetpub\AdminScripts 경로의 위치를 ​​얻는 레지스트리 키나 다른 방법이 있습니까?

아마 그냥 글을 써야 할 것 같아 값을 변경하는 C# 애플리케이션 또는 내 VBScript 대신 내 작은 앱으로 배포하시겠습니까?

도움이 되었습니까?

해결책 2

나는 일했다 JShumaker의 답변 문제를 해결하기 위해.가장 좋은 경로는 배치 스크립트를 실행하기 위해 호출하는 다음 InstallScript 함수인 것 같습니다.

prototype SetIISValues();   
function SetIISValues()  
    string szProgram, szCmd;
begin                              
    szProgram = TARGETDIR + "SetIISValues.bat";
    szCmd = "";  
    LaunchAppAndWait (szProgram, szCmd, LAAW_OPTION_WAIT);
end; 

배치 스크립트는 다음을 호출합니다.

@echo off
cscript.exe SetIISValues.vbs

그리고 VBScript는 다음과 같습니다:

Option Explicit
Dim IIsObject
Set IIsObject = GetObject("IIS://localhost/w3svc/1")
IIsObject.Put "Name", "Value"
IIsObject.Setinfo

이렇게 하면 ADSUTIL.VBS를 설치의 일부로 사용할 필요성이 줄어듭니다. ADSUTIL.VBS를 사용할 필요가 없으면 이에 대한 (상대) 경로는 관련이 없습니다.

다른 팁

최근에 비슷한 문제가 발생하여 msi 설치 프로그램의 사용자 지정 작업에 사용하기 위해 약간의 vbscript를 재작업하기로 결정했습니다.Adsutil.vbs가 작업을 수행하는 방식의 핵심을 파악하는 데 약간의 시간이 걸릴 수 있지만 내용은 매우 잘 작성되어 있습니다.예를 들어, 응용 프로그램 풀을 통합 모드 대신 클래식으로 전환하고 64비트 창에서 32비트 모드로 실행되도록 명시적으로 설정해야 했습니다. 그러면 증류된 형식으로 다음과 같은 결과가 발생했습니다.

Option Explicit

Dim IIsObject
Set IIsObject = GetObject("IIS://LocalHost/W3SVC/AppPools/TestPool")
IIsObject.Put "ManagedPipelineMode", 1
IIsObject.Setinfo
IIsObject.Put "Enable32BitAppOnWin64", CBool("True")
IIsObject.Setinfo
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top