2

多くの人が叫ぶことを知っているという要望がありますが、それを回避する方法は他にありません。私のWIXセットアップでは、セットアップで設定されたプロパティを使用して、アルゴリズムに関連する製品名(バージョンタイプなど)と生成する必要のあるロックコードを決定するダイアログがあります。これらに基づいて、ユーザーはロック解除キーを入力し、カスタムアクションは、3つのテキストボックスすべてから詳細を取得して、それが正しいことを確認します。これらを作成するためのアルゴリズムを作成しなかったため、残念ながら変更できません。

私の問題は、このダイアログの前にレジストリにプロダクトキーを作成して、ロックコードアルゴリズムがそこから読み取ることができるようにする必要があることです。したがって、基本的に、カスタムアクションを昇格させる必要があります。誰かがmsiexecを呼び出すカスタムアクションを実装したことをどこかで読みましたが、今はそれを見つけることができず、これを作成する方法がわかりません。誰かが同じ問題を抱えたことはありますか?私は人々が持っていることを読んでいますが、私は彼らの解決策を見つけることができないようです、あるいはそれがあったとしても。前もって感謝します

4

1 に答える 1

5

即時カスタム アクションは昇格できません。ピリオド、物語の終わり。#事実

あなたは何ができますか?

1) 管理者を要求するように明示されている setup.exe ブートストラップを使用し、ブートストラップによって起動されたことを強制する MSI の起動条件を使用します。(Bootstrapper はプロパティを MSI に渡します。SETUPEXEDRIVEN=1 は、InstallShield がそれを呼び出すものです。) これにより、UI シーケンス全体が確実に昇格されます。(ベストプラクティスではありませんが、私はあなたのためにそこに置いています。)

2) HKLM の代わりに HKCU に書き込みます (ライセンス コードのリファクタリングが必要になる可能性がありますが、いずれにせよ壊れた設計でした。)

3) インストーラー インターフェイスをライセンス API にリファクタリングします。私は前にこれをやったことがあります。私はかつて、インストーラーが EXE を呼び出してライセンスを検証することを期待する会社で働いていました。大きな問題の 1 つは、EXE がアウト プロセスであり、インストーラーと通信できないことです。そのため、彼らはレジストリに「ISVALID」を書き始めました。その後、EXE の周りに VBScript を書き込んで値をフラッシュし、exe を呼び出してから、値をチェックして MSI プロパティを設定する必要がありました。うーん、#FAIL と言えますか? 最適な解決策は、権限の昇格やその他のハッカーを必要としない、標準の MSI カスタム アクションから直接呼び出すことができるライセンス コード用の API を開発チームに作成させることでした。

于 2012-10-26T12:17:45.570 に答える