Вопрос

IIS 6 и более ранние версии поставляются с служебным сценарием под названием АДСУТИЛ.VBS:

AdSutil.VBS - это утилита администрирования IIS, которая использует Microsoft Visual Basic Basic Edition (VBScript) с интерфейсами Active Directory Service (ADSI) для манипулирования конфигурацией IIS.Этот скрипт следует запустить с помощью CSCRICT, который установлен с помощью хоста скрипта Windows.

Другими словами, этот инструмент позволяет вам изменить Метабаза IIS настройки программно, из командной строки.

Я хотел бы вызвать этот инструмент из проекта InstallShield, чтобы внести некоторые изменения в конфигурацию IIS.Мне любопытно, законно ли перераспространение сценария (в исходном коде нет юридической формулировки) или просто запустить команду через:

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

и надеемся, что сценарий существует на диске в этом месте.

Итак, мой вопрос - будет ли он всегда существовать по указанному выше пути, даже если некоторые другие веб-сайты (корни inetpub) на машине расположены на несистемном диске?Кажется, что все статьи MSDN и другие статьи базы знаний Microsoft, в которых упоминается инструмент ADSUTIL, используют указанный выше путь %SYSTEMDRIVE%.

я это вижу по крайней мере еще одна попытка справиться с этим распространяя cscript.exe иadsutil.vbs вместе с их проектами InstallShield.

Возможно, существует ключ реестра или другой способ узнать местоположение пути Inetpub\AdminScripts?

Может быть, мне стоит просто написать Приложение C#, изменяющее значение или мой собственный VBScript и вместо этого распространять с помощью моего собственного маленького приложения?

Это было полезно?

Решение 2

я работал в Ответ Дж. Шумейкера решить проблему.Лучшим маршрутом кажется следующая функция 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 как часть установки — (относительный) путь к нему не имеет значения, если вам не нужно его использовать.

Другие советы

Недавно я столкнулся с подобной проблемой и решил просто переработать небольшой фрагмент vbscript, чтобы использовать его в дополнительном действии в установщике MSI.Может потребоваться некоторое время, чтобы понять суть того, как adutil.vbs работает, но он очень хорошо написан.Например, мне нужно было переключить пул приложений в классический режим вместо интегрированного и явно настроить его для запуска в 32-битном режиме в 64-битных окнах. В дистиллированной форме это привело к следующему:

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