4

IIS 6以前には、 ADSUTIL.VBSというユーティリティスクリプトが付属しています。

Adsutil.vbsは、Active Directoryサービスインターフェイス(ADSI)を備えたMicrosoft Visual Basic Sc​​ripting Edition(VBScript)を使用してIIS構成を操作するIIS管理ユーティリティです。このスクリプトは、WindowsScriptHostとともにインストールされるCScriptを使用して実行する必要があります。

つまり、このツールを使用すると、コマンドラインからプログラムでIISメタベース設定を変更できます。

IISの構成を変更するために、InstallShieldプロジェクトからこのツールを呼び出したいと思います。スクリプトを再配布することが合法であるか(ソース内に合法的な表現がない)、または単に次の方法でコマンドを起動することが合法であるかどうか、私は興味があります。

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

スクリプトがその場所のディスクに存在することを期待します。

だから私の質問は-マシン上の他のウェブサイト(inetpubルート)がシステム以外のドライブにある場合でも、それは常に上記のパスに存在しますか?ADSUTILツールを参照しているすべてのMSDNおよびその他のMicrosoftKB記事は、上記の%SYSTEMDRIVE%パスを使用してこれを行っているようです。

InstallShieldプロジェクトでcscript.exeとadsutil.vbsの両方を配布することにより、これに対処するための少なくとも1つの他の試みが見られます。

おそらく、Inetpub \ AdminScriptsパスの場所を取得するためのレジストリキーまたは他の方法がありますか?

たぶん、値または自分のVBScriptを変更するC#アプリケーションを作成し、代わりに自分の小さなアプリで配布する必要がありますか?

4

2 に答える 2

3

私は最近同様の問題に遭遇し、msiインストーラーのカスタムアクションで使用するためにvbscriptを少し作り直すことにしました。adsutil.vbsがどのように動作するかの中核を理解するには少し時間がかかる場合がありますが、それはきちんと書かれています。たとえば、アプリケーションプールを統合モードではなくクラシックに切り替え、64ビットウィンドウで32ビットモードで実行するように明示的に設定する必要がありました。これにより、蒸留形式で次のようになりました。

オプション明示

薄暗いIIsObject
Set IIsObject = GetObject( "IIS:// LocalHost / W3SVC / AppPools / TestPool")
IIsObject.Put "ManagedPipelineMode"、1
IIsObject.Setinfo
IIsObject.Put "Enable32BitAppOnWin64"、CBool​​( "True")
IIsObject.Setinfo
于 2009-08-12T22:16:30.760 に答える
1

私は問題を解決するために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への(相対的な)パスは関係ありません。

于 2009-08-13T14:54:22.737 に答える