@miu555 (哲嗣 三浦)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Visual Studio 2022 「発行」手順について

いつもお世話になっております。

Visual Studio 2022 Version 17.3.5 を使用しています。

インストーラー作成にあたり、「発行」を行おうとしていますが、
ネットに掲載されている手順画面では、ターゲット選択画面(AZURE/CLICKONCE/Docker…/フォルダー)
を経て、発行ボタンのある画面で発行を行うようなのですが、自分のPCの場合、発行を選択すると、
ネットの手順書には無い「発行ウィザード」という画面が表示され、アプリケーションを公開するパスを
入力する画面になります。(自分はフォルダーを選択したい。)

フォルダーのPATHを入力すればいいのかなと思い、その画面に入力して進んでも発行ボタンのある
画面はなく、ビルドのような処理がされて終わります。
そして、エラー一覧のところに、
「CLICKONCEでは、要求の実行レベル’requireAdministrator'はサポートされていません」
と表示されます。

管理者権限付与のため、app.Manifestで、以下設定有効にしています。

また、プロパティ(セキュリティ)のところで、
「CLICKONCEセキュリティ設定を有効にする」のチェックを外して、改めて発行を進めても
同じエラーになると共に、そのチェックが勝手に付いて基の設定に戻ってしまいます。

VSのバージョンによって画面や手順は変わるとは思うのですが、どうにも発行が完成できず、
手詰まりの状況でして、何かアドバイスを頂くことはできないでしょうか。

どうかよろしくお願い致します。

0 likes

1Answer

使用しているフレームワークやフレームワークのバージョンによっても発行の手順が違うようですので、プロジェクトで使用しているフレームワークとフレームワークのバージョンを教えていただけますか? (.NET Core 3.0, .NET Framework 3.0など)

ClickOnceで発行する場合は、app.manifestファイルのrequestedExecutionLevelのlevelをasInvokerにする必要があるようです。

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
	<security>
		<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
			<!--
				requireAdministratorにするとClickOnceでは発行できない
				<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
			-->
			<requestedExecutionLevel level="asInvoker" uiAccess="false" />
		</requestedPrivileges>
		<applicationRequestMinimum>
			<defaultAssemblyRequest permissionSetReference="Custom" />
			<PermissionSet ID="Custom" SameSite="site" />
		</applicationRequestMinimum>
	</security>
</trustInfo>

この状態で発行を行い、ビルドが通れば指定したフォルダにファイルが生成されると思います。
この方法では管理者権限で起動を強制できないので、プログラム側で管理者権限で起動されているか確認する必要があります。

0Like

Comments

  1. @miu555

    Questioner

    ご回答ありがとうございます!
    フレームワークは .NETFramework,Versio公開v4.7.2 になります。
    その後、改めて画面をよく確認しましたところ、
    プロジェクトプロパティの公開ページの下のほうに「今すぐ公開」というボタンを発見しました。

    できれば、以下の管理者権限で作りたく、また、すみません、そもそもClickOnce設定の意味が分かってないこともあり、ClickOnceである必要はないのですが、いずれにしましても
    チェックを外しても付いてしまうということで、asInvoker で作るしかなさそうという
    理解でよろしいでしょうか。

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

  2. おそらくですが、.NET FrameworkではClickOnce以外での発行はできないようです。
    ですので、asInvokerで作成する必要があるということになります。

    管理者権限として起動する方法としては以下に情報がありましたが、制約があるようですので注意してください。
    https://stackoverflow.com/questions/5713825/run-as-administrator-requireadministrator-clickonce-emulating-system-time/19180975#19180975


    ネットに掲載されているものは、.NETで作成されていると思います。
    .NETでは発行の際にClickOnceかフォルダかを選択できるようです。
  3. @miu555

    Questioner

    ありがとうございました。

    asInvoker で成功しました。
    管理者権限での実行につきましては、スケジューラーの設定で対応することに
    いたします。

Your answer might help someone💌