.NET アプリでバージョン情報の統一

SeeMe for Windows のバージョン情報が滅茶苦茶なのでなんとかせねば。

まず Explorer から本体のプロパティ。

explorer_prop

これは Visual Studio でプロジェクトのプロパティから「アセンブリ情報(I)…」ボタンを押して

assy_prop

で変更するんだがよく忘れるんだコレが。
最近は公開直後に即バージョンをインクリメントという対策をしているんだけど…
Visual Studio というより Windows が久々なので忘れていたわい。

ぱぇぽぃ2 ? Blog Archive ? SeeMe for Windows v4.0.1

のとおりダイアログのバージョンを書き換えるのを忘れていたし。
というか毎回ダイアログ文字列を変更ではおかしいので本体からバージョンを取得したい。

デルヒャァで作っていた頃はやっていたんですけどね。

procedure TAboutDlg1.FormShow(Sender: TObject);
var
  BuffSize, Ignore: Cardinal;
  P: Pointer;
  FileDescription: PChar;
begin
  BuffSize := GetFileVersionInfoSize(PChar(Application.ExeName), Ignore);
  P := AllocMem(BuffSize);
  GetFileVersionInfo(PChar(Application.ExeName), Ignore, BuffSize, P);

  VerQueryValue(P, PChar('\StringFileInfo\041103A4\FileVersion'),
                Pointer(FileDescription), Ignore);
  Label1.Caption := 'Y901 v' + FileDescription;

  FreeMem(P);
end;

こんな感じで、我ながら Object Pascal が懐かしい…
これを .NET Framework で同じようにするには

自分自身のバージョン情報を取得する: .NET Tips: C#, VB.NET, Visual Studio

やはり Windows で C# なら日本語でアッサリ見つかるなぁ…
日本語で GTK+ だと UNIX 臭さ全開かサル以前かの両極端しか無いのだが。

var version = System.Diagnostics.FileVersionInfo.GetVersionInfo(
    System.Reflection.Assembly.GetExecutingAssembly().Location);
v[0].Inlines.Add(new Bold(new Run("SeeMe for Windows " + version.FileVersion + "\n")));

と前回のコードを書き換えればオケのようで。
これであらかじめ本体のバージョン情報を更新しておけば追従してくれる。

cpanel_prop

インストーラのバージョンと本体のバージョンが合わない。
そう思って Version プロパティを弄くったら複数インストール可能になって困ったし。
それとアップデート毎に前バージョンの削除をさせるのも考え物だ。
実は前バージョンを削除してインストールする方法が解らなかっただけなんだが。

セットアッププロジェクトにて前のバージョンを削除してから新バージョンをインストールする(VisualStudio, Setup, msi) – いろいろ備忘録日記

うっ!それだけだったのかというか Version プロパティってそういうことか。
リンク先が無くなってしまったら困るので簡易で覚え書き。

セットアッププロジェクトのプロパティ
DetectNewerInstalledVersion = true
RemovePreviousVersion = true
Version をインクリメントすると ProductCode 変更ダイアログが出るので「はい」

を試してみたらアッサリと、プロジェクトのプロパティだけでイケたのね。
これでインストーラのバージョンと実行ファイルのバージョンを合わせることができた。

それと ToolBarTray を IsLocked=”True” にして動くように見えていたのをなんとかして。
ToolBar OverflowMode=”Never” にしてもオーバーフローボタンは消せないのね…
正直 WPF を使うには Visual Studio でないと厳しいと感じてきた。
そうそう、インストーラの名前に beta の意味な b が入っているのを消さなきゃ。

ということで修正のみだけど SeeMe for Windows v4.0.2 公開。

おまけ

2009-08-19 – 当面C#と.NETな記録 Visual Studio で一行だけコピーや削除するときには行を選択しなくてもよかった件について

マジだぁ!
トリプルクリックで一行選択してくれないけど、秀丸も EmEditor も Gedit さえもできるのに。
Visual Studio はトリプルクリックする必要すら無かった。

てゆーか空白やインデントがおかしいコードも貼り付けで勝手に整形してくれるぞ!

url.Click +=new RoutedEventHandler(url_Click);
// をコピーして貼り付けると同じソースコード中でも下のように
url.Click += new RoutedEventHandler(url_Click);

へたに手書きするよりコピペのほうが綺麗なコードになるとはね。