1

サーバー/クライアント プログラム用に InstallShield 2014 を使用して基本の MSI インストーラーを作成しましたが、サーバー アプリがインストールされる前にインストールされたデータベースのライセンス キーに基づいて機能を動的に非表示にする必要があります。非表示にする必要がある機能の条件を作成し、ライセンスがない場合は InstallLevel を 0 に設定し、ライセンスがある場合は 1 に設定しました。SQL ログイン ダイアログの後でライセンス キーを取得していますが (そうしないと、インストーラーはどのデータベースを参照すればよいかわからないため)、ダイアログが作成される前に実行される CostFinalize アクション中に条件が評価されます。そのため、ライセンス キーを取得し、他のカスタム アクションを実行して各機能が利用可能かどうかを判断した後、CustomSetup ダイアログが表示される前に CostFinalize アクションを呼び出します。

表示する必要がある機能の正しい動作が得られています。ダイアログでその機能を選択または選択解除できますが、インストールを実行すると、選択した機能がインストールされません....ログファイルには次のように記載されていますユーザーが明確に機能を選択していても、その機能はインストール用に選択されていません。なぜこれが起こるのでしょうか?機能を動的に非表示にする別の方法はありますか (InstallScript アクションで FeatureSetData 関数を試しましたが、役に立ちませんでした)?

また、機能に条件を追加した後、プログラムと機能アプリからプログラムをアンインストールしようとすると、エラー 1606 ネットワークの場所にアクセスできませんでした。機能に条件があると、レジストリ キーがめちゃくちゃになるようなものです...どんな助けでも大歓迎です。

4

2 に答える 2

0

CostFinalize をダイアログで実行して、機能リストを更新することもできます。手順は次のとおりです。 SetupType ダイアログの Next PushButton で、上部に新しい項目を作成します。

イベント: DoAction

引数: CostFinalize

条件: 1=1

私の場合、以前のダイアログに基づいて機能を非表示にしていて、プログラム機能の条件を再評価する必要がありました。条件: レベル:0 GLOBAL_VAR=0 条件: レベル:1 GLOBAL_VAR=1

于 2015-10-02T17:22:39.120 に答える