Pergunta

O IIS 6 e mais velhos navios com um script utilitário chamado ADSUTIL.VBS :

Adsutil.vbs é uma administração IIS utilitário que usa o Microsoft Visual Basic Scripting Edition (VBScript) com Service Active Directory Interfaces (ADSI) para manipular o configuração de IIS. Este script deve ser executado usando CScript, que é instalado com o Windows Script Host.

Em outras palavras, esta ferramenta permite alterar metabase do IIS configurações programaticamente, a partir da linha de comando.

Gostaria de chamar esta ferramenta a partir de um projeto do InstallShield, a fim de fazer algumas alterações de configuração para o IIS. Estou curioso para saber se ele quer legal para re-distribuir o roteiro (não há nenhum texto legal dentro da fonte para ele) ou simplesmente para lançar o comando via:

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

e esperança de que o script existe no disco nesse local.

Então, minha pergunta é - vai sempre existir nesse caminho acima, mesmo que alguns outros sites (inetpub raízes) na máquina estão localizados em uma unidade não-sistema? Parece que todos MSDN e outros artigos Microsoft KB que se referem à ferramenta ADSUTIL fazê-lo usando o caminho% SystemDrive% acima.

Eu vejo que pelo menos uma outra tentativa de lidar com este , distribuindo tanto cscript.exe adsutil.vbs e com seus projetos InstallShield.

Talvez haja uma chave do registro ou outro método para obter a localização do caminho Inetpub \ AdminScripts?

Talvez eu devesse escrever uma aplicativo C # que altera o valor ou minha própria VBScript e distribuir com o meu próprio pequeno aplicativo em vez disso?

Foi útil?

Solução 2

Eu trabalhei na a resposta de JShumaker para resolver o problema. O melhor caminho parece ser a seguinte função InstallScript que chamo para executar um script em lotes:

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

O script em lotes chama isso:

@echo off
cscript.exe SetIISValues.vbs

E os olhares VBScript como este:

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

Fazendo dessa forma, alivia a necessidade de usar ADSUTIL.VBS como parte da instalação -. O caminho (relativo) de que é irrelevante se você não precisar usá-lo

Outras dicas

Eu corri para um problema semelhante recentemente e decidiu apenas refazer um pequeno pedaço de VBScript para uso em uma ação personalizada em um instalador MSI. Pode demorar um pouco para descobrir o núcleo de como adsutil.vbs faz as coisas, mas é deently bem escrito. Por exemplo, eu precisava para mudar um pool de aplicativos para clássico em vez de modo integrado e defini-lo explicitamente para executar no modo de 32 bits, quando no Windows de 64 bits, em forma destilada isso resultou no seguinte:

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top