2011-02-04 6 views
0

ユーザーに管理者権限がない場合。レジストリから読み込んだボタンのクリックイベントでインストーラクラスを呼び出すにはどうしたらいいですか?また、C#でレジストリに値を書き込みますか?セットアップのカスタムアクションではなく、C#のボタンクリックでインストーラクラスを呼び出すことはできますか?

ユーザーが登録に行くときにエラーが発生するため、レジストリに値が書き込まれ、ユーザーはレジストリに書き込む権利がありません。だから私は、インストーラクラスだけがそれを行う権利があることを知っています。だから私はこの作品を作ることができますか?

答えて

0

推奨されるアプローチは、2つの異なるカスタムアクションを使用することです:データの書き込みを行うのがInstallExecuteSequence(インストール時) 内のデータを読み込み、インストールUI(レジストリ値)

  • で他を

    • 1を

    このようにして、アクセス権の問題は発生しません。

  • +1

    InstallUtilカスタムアクションでレジストリを読み取ることは可能ですが、プロパティを設定することはできません。したがって、2番目のカスタムアクションのCustomActionDataを読み取るように設定することはできません。 –

    +0

    私は、ユーザーごとのレジストリエントリまたは一時ファイルを使用してデータを格納することについて考えていたことを忘れていました。私はクラスのアクションはインストーラのプロパティを設定できないことを知っていますが、インストール中に一時的な情報を保存する方法は複数あります。 –

    0

    有効な理由が1つありません。インストーラークラスのカスタムアクションには、MSIハンドルへのアクセス権がありません。つまり、プロパティを取得/設定できません。使用できる唯一のことは、マシンの構成を変更することです。これは、ユーザーインターフェイスシーケンス内でこれを行うためのWindowsインストーラのベストプラクティスすべてに反するものです。

    UIのボタンで行うべき唯一のことは、次のダイアログに進む前に行う必要がある検証処理です。たとえば、SQLサーバーに接続するための資格情報などのユーザー入力を検証する例があります。 SQLサーバーに接続して何かを行うことは、実行シーケンスで遅延カスタムアクションとして実行する必要があります。

    WiX DTFを調べることをお勧めします。これにより、Installerクラスのカスタムアクションよりも多くの機能が公開され、ベストプラクティスに従ったソリューションを作成することができます。

    関連する問題