サーバー/クライアント プログラム用に InstallShield 2014 を使用して基本の MSI インストーラーを作成しましたが、サーバー アプリがインストールされる前にインストールされたデータベースのライセンス キーに基づいて機能を動的に非表示にする必要があります。非表示にする必要がある機能の条件を作成し、ライセンスがない場合は InstallLevel を 0 に設定し、ライセンスがある場合は 1 に設定しました。SQL ログイン ダイアログの後でライセンス キーを取得していますが (そうしないと、インストーラーはどのデータベースを参照すればよいかわからないため)、ダイアログが作成される前に実行される CostFinalize アクション中に条件が評価されます。そのため、ライセンス キーを取得し、他のカスタム アクションを実行して各機能が利用可能かどうかを判断した後、CustomSetup ダイアログが表示される前に CostFinalize アクションを呼び出します。
表示する必要がある機能の正しい動作が得られています。ダイアログでその機能を選択または選択解除できますが、インストールを実行すると、選択した機能がインストールされません....ログファイルには次のように記載されていますユーザーが明確に機能を選択していても、その機能はインストール用に選択されていません。なぜこれが起こるのでしょうか?機能を動的に非表示にする別の方法はありますか (InstallScript アクションで FeatureSetData 関数を試しましたが、役に立ちませんでした)?
また、機能に条件を追加した後、プログラムと機能アプリからプログラムをアンインストールしようとすると、エラー 1606 ネットワークの場所にアクセスできませんでした。機能に条件があると、レジストリ キーがめちゃくちゃになるようなものです...どんな助けでも大歓迎です。