2

ユーザーが必要に応じてツールバーをインストールできるように、インストーラーに合わせてカスタム スクリプトを作成しています。レイアウトは次のようになります。

http://i47.tinypic.com/2v92csl.png

それに付随するコード:

' Set Executable
Set WshShell = CreateObject("WScript.Shell") 
' Set booleans for what features to enabled/disable
Dim Feature1 As Boolean
Dim Feature2 As Boolean
Dim Feature3 As Boolean
Dim Feature4 As Boolean
Feature1 = False
Feature2 = False
Feature3 = False
Feature4 = False

If Session.Property("RADIO") = "RadioFeatureA" Then
  Feature1 = True
  Feature2 = False
ElseIf Session.Property("RADIO") = "RadioFeatureB" Then
  Feature2 = True
  Feature1 = False
End If

' Set the checkbox1 feature if ticked
If Session.Property("CHECK1") = "install" Then 
  Feature3 = True
Else
  Feature3 = False
End If

' Set the checkbox2 feature if ticked
If Session.Property("CHECK2") = "install" Then
  Feature4 = True
Else
  Feature4 = False
End If

' Execute the file
If Feature1 = True Then
  WshShell.Run (""APPDIR\file.exe"" /SILENT /INSTALL)
ElseIf Feature2 = True And Feature3 = True Then
  WshShell.Run (""APPDIR\file.exe"" /SILENT)
ElseIf Feature2 = True And Feature4 = True Then
  WshShell.Run (""APPDIR\file.exe"" /SILENT)
ElseIf Feature2 = True And Feature3 = True And Feature4 = True Then
  WshShell.Run (""APPDIR\file.exe"" /SILENT /INSTALL)
End If

しかし、何らかの理由でインストーラーがクラッシュします。コードは私には問題なく見え、外部で実行されますか?

4

1 に答える 1

2

exdcutables を起動しようとすると、クラッシュが発生すると思われます。理由は、UAC の権利など、さまざまです。しかし、私の注意を引いたのは、APPDIR プロパティの使用方法です。最初に別の変数でその値を取得してから、. 実行可能ファイル名を変数に追加して、正しいパスを取得します。

ただし、ファイルがインストールされる前に、MSI ダイアログでのアクションによってトリガーされた発行済みイベントを使用してスクリプトを起動すると想定しているため、これはまだ機能しません。したがって、実行可能ファイルは使用できません。

スクリーンショットから、高度なインストーラーを使用していると思われるため、問題を解決するには2つのオプションがあります。

  1. [ファイル] ビューからファイルを削除し、再度追加することができます。今回は [一時ファイルの追加] オプションを使用して、必要なときにそれらを使用できるようにします。一時ファイルには一意のプロパティも添付されているため、それを使用してパスを取得できます。構築する必要はありません。
  2. セットアップを機能ベースの前提条件として追加し、[組織] ページに移動して、プロパティを使用して機能のインストール条件を設定できます。通常、機能のインストール条件は MSI ダイアログから設定されたプロパティの使用をサポートしていないため、ダイアログの [次へ] ボタンから定義済みのカスタム アクション「機能の状態の更新」を呼び出す必要があります。評価した。このようにして、使用が推奨されていないスクリプトを削除したり、アンチウイルスがインストーラーにフラグを立てたり、vbscript エンジンがユーザーのマシンで動作しないなどの可能性があります...
于 2012-07-20T17:03:31.227 に答える