4

高度なインストーラー 10.7.1 を使用しています。「Windows PowerShell スクリプトを実行する」というカスタム アクションを追加しています。このスクリプトが行うことは、インストーラーが azure vm で実行されているかどうかを確認することです。そうである場合にのみ、ユーザーはインストールを許可されます。スクリプトは vm で正常に実行されます。確認しました。しかし、スクリプトの結果に基づいてエラー メッセージを表示する必要があります。これは、エラー メッセージの表示に基づいて、スクリプトに何らかのプロパティを設定する必要があることを意味します。PowerShell スクリプトを使用して高度なインストーラーのプロパティを設定する方法を教えてください。

4

3 に答える 3

1

これはWindows Installer の制限であり、Advanced Installer の制限ではありません。PowerShell はインストールの Session オブジェクトにアクセスできないため、MSI のビルドに使用するツールに関係なく、PowerShell スクリプトから MSI にプロパティを設定または取得することはできません。

プロパティの設定に使用できる唯一のカスタム アクション (もちろん即時にスケジュールされています) は、VBS スクリプト (インラインまたは添付ファイル) またはC++またはC#で記述された DLL です。C# では、多数の .NET API にアクセスできるため、はるかに簡単です (ただし、.NET Framework がエンド ユーザー マシン上にあるという要件もあります)。

@ravikanth

スクリプト テキストのみを受け取り、戻り値に基づく関連アクションはありません。変!

これは、Windows インストーラーがどのように機能するか、つまり、すべての MSI パッケージが構築されるテクノロジです。より具体的には、MSI で実行されているカスタム アクションは、リターン コードを使用して、メインのインストールの進行状況と「必要なもの」を伝えることができません。Windows インストーラーは、厳密に定義された一連のリターン コードのみを受け入れます。高度なインストーラーでの PowerShell カスタム アクションの場合、リターン コードはインストーラーによってバックグラウンドで制御されます。

インストールで PS スクリプトが使用されるシナリオは、通常、ユーザーがマシン上で特定の構成を行い、インストールの準備をする必要がある場合です。(Windows コンポーネントのインストール/アクティブ化、ネットワーク資格情報の構成など...) インストーラーに非常に適切かつ強力に統合されたカスタム コードについては、DLL をカスタム アクションとして使用する必要があります。 ) また、IDE に適切にデバッグすることもできます (インストール プロセスにアタッチすることにより)。

于 2014-05-28T06:43:09.037 に答える
0

Advanced Installer がどのように機能するかはわかりませんが、いつでもスクリプトから値を返し、その値を呼び出し元で使用できます。例えば、

#Custom Script action
#Get the VM details
If (AzureVM) {
   $true
} else {
   $false
}

スクリプトの結果が得られたら、それを使用してインストールのパスを切り替えたり、メッセージを表示したりします。

于 2014-05-28T05:49:39.590 に答える