投稿者 魔界の仮面弁士  (社会人) 投稿日時 2024/2/22 21:39:01
> ユーザ側から見たバージョンは[公開するバージョン]でしょうか。
> この[公開するバージョン]を取得するコードが知りたいです。

「公開するバージョン」は ClickOnce 配布する場合の管理情報です。
アプリケーションそのものの情報ではありませんので、作成した EXE ファイル等を
直接コピー配布するような場合には用いられませんが、よろしいですか?

ClickOnce の仕組みはこちら。VS2005 時代の情報なので、インストーラーのフォルダー階層等は
今の物とは幾分違っていますが、考え方は今でも同じです。
https://atmarkit.itmedia.co.jp/ait/articles/0603/11/news018.html

公開バージョンをプログラムから得るためには、まず、自アプリが ClickOnce 発行されたものであるかどうかを確認しなけばなりません。
そのための判定処理はこう書きます。
If My.Application.IsNetworkDeployed Then

My を使いたくない場合は、 System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed でも同じです。
その性質上、Visual Studio からのデバッグ実行ではなく、実際に発行してインストールされたアプリから呼ばれないと True になりません。

上記が True であることが判明したうえで、「公開するバージョン」をこのように取得します。
IsNetworkDeployed が False の時に呼ぶとエラーになりますのでご注意ください。
'System.Version クラスのインスタンスを得る 
Dim ver1 = My.Application.Deployment.CurrentVersion
Dim ver2 = My.Application.Deployment.UpdatedVersion

My.Application.Deployment のかわりに
System.Deployment.Application.ApplicationDeployment.CurrentDeployment でも構いません。

UpdatedVersion と CurrentVersion は、ほとんどの場合、同じバージョンを返しますが、
新しい更新がインストールされていても、まだアプリケーションを再起動していない場合には、
UpdatedVersion は CurrentVersion と異なります。新しい更新が存在するかどうかは、
If My.Application.Deployment.CheckForUpdate() Then で判断できます。

> VB2019でプロジェクトのプロパティを開くと、
> [アプリケーション]-[アセンブリ情報]-[アセンブリバージョン]
> [アプリケーション]-[アセンブリ情報]-[ファイルバージョン]
> [公開]-[公開するバージョン]
> など、複数の「バージョン」があります。
EXE ファイルそのものに含まれるバージョンにつきましては、こちらが参考になるでしょう。
https://dobon.net/vb/dotnet/file/myversioninfo.html
https://dobon.net/vb/dotnet/file/fileversion.html