2009-05-18 14 views
0

環境でのシールド2009プレミアカスタムアクションの問題をインストールします。シールド2009プレミア、ビスタ(ホーム/プレミアム、アルティメット)は、VistaのHome /プレミアム/アルティメット

をインストールし、私は、インストール時に火災うインストールシールド2009年にカスタムアクションを持っています。 setup.exeがうまく動作しても、VistaのMyApplication.msiを実行した場合(他のOSではカスタムアクションはうまくいきます)、カスタムアクションの実行中に例外が表示されます。カスタムアクションは、コマンドライン引数でexeファイルを実行するだけです。

そのexeは、そのOSで個別に問題なく動作します。しかし、MyApplication.msiを実行したいときは、例外が表示されます。

私は考える:MyApplication.msiは、そのカスタムアクション(.exeファイル)に適切な特権(管理)を実行することはできません。しかし、setup.exeを実行することはできます。

どうすれば解決できますか?私のカスタムアクションのためのカスタムアクションウィザードから


、私は「システムコンテキストで遅延実行」を選択しました「には、スクリプトの実行」の値の

答えて

1

あなたは述べるませんでしたが、それはあなたのセットアップのように聞こえます.exeには管理者権限が必要なマニフェストがあります(setup.exeを起動したときにUACプロンプトが表示された場合)。また、カスタムアクションから実行しようとしているexeも同様の管理者権限要件を持っている可能性があります。 MSIのexeカスタムアクションは、昇格できないCreateProcessを使用します。

あなたのアクションはUIシーケンスで実行する場合は、何らかの形でのShellExecuteまたはShellExecuteExをを使用する必要がある - これはフラグLAAW_OPTION_USE_SHELLEXECUTEで、または直接ShellExecuteExをを呼び出すC++とにLaunchApplicationを使ってInstallScriptカスタムアクションを行うことができます。

アクションがExecuteシーケンスで実行されている場合は、システムコンテキストでDeferredをマークして、昇格したコンテキストから起動するようにしてください。他の方法で表示される余分なUACプロンプトが表示されないように、これは一般的に(少なくともユーザーエクスペリエンスの点で)優先されます。ただし、延期されたアクションには制限があります(最小限のプロパティアクセスなど)。

+0

こんにちはマイケル、ありがとう4あなたの情報。はい、Im InstallShieldの新機能です。 私のカスタムアクションは、実行シーケンスで実行されます。そのプロパティは以下の通りであった。 復帰処理:同期(終了コードを確認してください)スクリプトの実行で :即時実行 実行スケジュール:常にUIシーケンスをインストール を実行は: は、シーケンスを実行しインストールします<第アクション> 実行インストール条件:インストールされていない、パッチされていない インストール中に[スクリプト実行中]プロパティが[システムコンテキストでの遅延実行]に設定されていると、XPおよびVistaでも例外が表示されます。 ここで何をすべきですか? – Samir

+0

これは遅延アクションのもう1つの制限です.InstallInitializeとInstallFinalizeの間でスケジューリングする必要があります。実際に最初のアクションである必要がある場合は、おそらくUIシーケンスメソッドに戻す必要があります(実行シーケンスではUIが表示されないため、実行シーケンスでは2倍です)。 –

+0

マイケルに感謝します。できます。私はまた、そのカスタムアクションのマニフェストファイルを追加しましたが、Vistaでは動作しません。 – Samir