Question

IIS 6 et plus livré avec un script utilitaire appelé ADSUTIL.VBS :

  

Adsutil.vbs est une administration IIS   utilitaire qui utilise Microsoft Visual   Basic Scripting Edition (VBScript de)   avec le service Active Directory   Interfaces (ADSI) pour manipuler le   configuration IIS. Ce script devrait   exécuter à l'aide CScript, qui est   installé avec Windows Script Host.

En d'autres termes, cet outil vous permet de changer métabase IIS paramètres programme, à partir de la ligne de commande.

Je voudrais appeler cet outil à partir d'un projet InstallShield afin d'apporter des modifications de configuration à IIS. Je suis curieux de savoir s'il soit légal de redistribuer le script (il n'y a pas libellé juridique à l'intérieur de la source pour elle) ou de lancer simplement la commande via:

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

et nous espérons que le script existe sur le disque à cet endroit.

Ma question est - il sera toujours exister dans cette voie ci-dessus, même si certains autres sites (inetpub racines) sur la machine sont situés sur un lecteur non-système? Il semble que tout MSDN et d'autres articles Microsoft KB qui font référence à l'outil de ADSUTIL faire en utilisant le chemin% SYSTEMDRIVE% au-dessus.

Je vois que au moins une autre tentative de faire face à cette en répartissant les cscript.exe et adsutil.vbs leurs projets InstallShield.

Peut-être il y a une clé de Registre ou une autre méthode pour obtenir l'emplacement du Inetpub \ AdminScripts chemin?

Peut-être que je devrais écrire un C # application qui modifie la valeur ou mon VBScript et distribuer avec ma petite application à la place?

Était-ce utile?

La solution 2

J'ai travaillé dans la réponse de JShumaker pour résoudre le problème. La meilleure route semble être la fonction InstallScript suivante que j'appelle à exécuter un script batch:

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

Le script batch appelle ceci:

@echo off
cscript.exe SetIISValues.vbs

Et le VBScript ressemble à ceci:

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

En procédant ainsi, soulage la nécessité d'utiliser ADSUTIL.VBS dans le cadre de l'installation -. Le chemin (relatif) à elle est hors de propos si vous n'avez pas besoin de l'utiliser

Autres conseils

Je suis tombé sur un problème similaire récemment et a décidé de retravailler juste un petit peu de vbscript à utiliser dans une action personnalisée dans un programme d'installation msi. Il peut prendre un peu pour comprendre le cœur de la façon dont adsutil.vbs fait des choses, mais il est bien deently écrit. Par exemple, je devais passer un pool d'applications classique au lieu du mode intégré et définir explicitement pour fonctionner en mode 32 bits lorsque sur Windows 64 bits, sous forme distillée cela a abouti à ceci:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top