7

MSI ファイルから実行する必要がある、作成した VBScript があります。スクリプトは、Windows 内で単独で実行すると正しく実行されますが、インストーラーから実行すると、ログ ファイルに次のようなエラーが表示されます。

Microsoft VBScript runtime error: object required: 'WScript', Line 3, Column 2

スクリプトは以下のとおりです。

sub shell(cmd)
    Set objShell = WScript.CreateObject("WScript.Shell")

    objShell.Run("""" & cmd & """")
    Set objShell = Nothing
end sub

set objFSO = CreateObject("Scripting.FileSystemObject")

strcmd32 = "C:\Path\PathToExecutable.exe"
strcmd64 = "C:\Path\PathToExecutable64.exe"

if (objFSO.FileExists(strcmd32)) then
    shell(strcmd32)
else 
    shell(strcmd64)
end if

set objFSO = Nothing

前に述べたように、インストーラーのコンテキスト外で実行すると、このスクリプトは正常に実行されます。セットアップ プロジェクトの種類は VS2010 セットアップおよび展開パッケージです (これはクライアントが使用したいものであり、他のものは使用できません)。何か案は?

4

2 に答える 2

9

「シェル」サブルーチンでは、「CreateObject()」を呼び出す前の最初の行から WScript を削除しました。修正された行は次のようになります。

'Note the absent reference to WScript on the call to CreateObject()
Set objShell = CreateObject("WScript.Shell")
于 2012-06-04T14:13:37.193 に答える
3

シンプルなプロジェクトにいくつかのマージ モジュールとアプリケーションのファイルが含まれている場合は、より優れたツールであるAdvanced Installerを使用できます。必要な場合は、無料版を使用できます。つまり、「シンプル」プロジェクト タイプを作成します。マージ モジュールとファイルの追加には、1 分もかかりません。

カスタム アクションを完全に削除して、[ファイルとフォルダー] ページに移動できるショートカットを作成し、コンテキスト メニュー オプションまたはツールバーを使用して、外部ショートカットを作成できます。マージモジュールからのファイルを指すか、パッケージからではないファイルを指します。

このようにして、はるかにクリーンなセットアップ パッケージを簡単に作成でき、カスタム アクションが失敗する可能性を心配する必要がありません。

于 2012-06-04T16:19:11.577 に答える