.NET4プログラムとそのインストーラーの2つのプロジェクトを含むVS2010ソリューションがあります。インストーラーは、前提条件(.NET Framework 4)を備えた単純なセットアッププロジェクトです。
問題は、インストーラーsetup.exeを常に管理者として実行する必要があることです。そうしないと、UACでセットアップが失敗します。(デフォルトでは、特権の昇格を求めるプロンプトは表示されません。)
setup.exe.manifest (以下に表示)をsetup.exeと一緒に配置して、管理者として実行するように強制しましたが、残念ながらWindowsはそれを無視します。これは、setup.exe自体にすでに別のマニフェストファイルが埋め込まれているためと考えられます。 requireAdministratorではなくasInvokerに設定します。
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
また、次のプロパティを使用して起動条件を追加してみました。-
(name): Elevated
Condition: Privileged
Message: This installation requires elevated permissions to continue.
それも何もしません。
それで、誰かがこの問題を解決する方法に光を当てることができますか?
PS setup.exeの互換性設定を変更することでこの問題を回避できることは知っていますが、これは手動プロセスであり、自動ビルドプロセス(TFS)を介して行うことはできません。また、互換性設定を使用してショートカットを提供することも奇妙です。同じフォルダー内のsetup.exeへのショートカットを提供する人はいないため、ショートカットはsetup.exeの正確なパスを事前に知っている必要があることは言うまでもありません。(セットアップパッケージは移動されます。)
編集:ちなみに、私の問題はここで説明したものとまったく同じです。しかし、残念ながら、その人の解決策は見つかりませんでした。質問者は、クライアントに手動でRunAsAdministratorを使用するように依頼しました。これは私が避けようとしていることです。