カスタム マネージド (C#) アクションを埋め込む WiX 3.6 を使用して、Windows インストーラー パッケージを作成しました。
この段階で、インストールには以下が必要です。
- インストーラーは、特定のローカル管理者アカウント (この場合、ローカル管理者である SharePoint インストーラー アカウント) を使用して実行されます。
- ユーザー アカウント制御を無効にする
要件 1 をバイパスする方法は実際にはありません。マネージ アクションは、SharePoint インストーラー アカウントのコンテキストで実行される場合にのみ、特定の手順を実行できるからです。
要件 2 を削除し、UAC が有効になっている場合でもインストーラーを適切に実行したいと考えています。
私はこの問題をかなり広範囲に調査しましたが、まだ機能させることができません。パッケージにInstallScope="perMachine"を設定しました。これにより、UAC の昇格が適切に求められるように見えますが、インストーラーは悪名高い 2869 エラーで失敗します。
主な問題は、ローカル管理者アカウントではなく、現在のユーザーのコンテキストで実行する必要があるため、カスタム アクションがImpersonate="yes"で構成されていることです。オンラインで検索すると、ほとんどすべての「修正」がカスタム アクションでImpersonate="no"を指していますが、それは私にとっては選択肢ではありません。
したがって、私の質問は次のとおりです。UAC を完全に無効にすることなく、現在のユーザーの ID でカスタム マネージド アクションを実行する方法はありますか?