2

私は installshield 2012 spring express edition で作業しています。vb.netで開発されたexeを呼び出すexeカスタムアクションを作成しました.exeにはキャンセルボタンがあります。ユーザーがキャンセル ボタンをクリックすると、エラー ボックスが installshield セットアップでポップアップ表示されます (エラー コード 1722)。このエラーが発生する理由はわかっていますが、ユーザーにこのエラーを表示したくなく、ユーザーにエラー メッセージを表示せずにインストールをキャンセルしたいと考えています。

詳細が必要な場合は教えてください。

4

1 に答える 1

2

ここでは、さまざまなことが行われています。

  1. EXE カスタム アクションは使用しないでください。それらはアウト プロセスで実行され、MSI ハンドルにアクセスできず、その他のさまざまな障害ポイントがあります。参照: EXE カスタム アクションの統合のハードル

  2. 代わりに WiX DTF を使用して、Windows インストーラーに標準 C++ Win32 DLL として提示されるマネージ コード カスタム アクションを記述します。参照: WiX と DTF: カスタム アクションを使用して IIS で利用可能な Web サイトを一覧表示する

  3. カスタム アクションは、UI をまったく表示してはなりません。進行状況ダイアログに表示される Windows インストーラーまでのメッセージを公開する必要があります。カスタム アクションがユーザーに情報を求める場合、これも間違っています。インストールのユーザー インタビュー段階で、UI シーケンスでそれを行う必要がありました。

  4. プログレス ダイアログにメッセージを渡すと、ユーザーがキャンセル ボタンを押したことを示すリターン コードが MSI から返されます。次に、このボタンを使用して、カスタム アクションの処理を中断する必要があります。その後、Windows インストーラーがロールバックし、[セットアップが中断されました] ダイアログが表示されます。参照:延期されたカスタム アクションでキャンセル ボタンを機能させるためのヒント

  5. InstallShield Express は非常に制限されたツールであり、必要なすべてのオーサリングを直接実行できない場合があります。伸ばす方法はあります。参照: Windows Installer XML を使用した InstallShield の拡張 - 証明書

私があなたに示したのは、それを行う正しい適切な方法です。それ以外は、MSI のベスト プラクティスの観点から最適とは言えません。

于 2012-08-29T11:32:41.730 に答える