xtne6f / EDCB

BonDriver based multifunctional EPG software
Other
165 stars 37 forks source link

バージョン情報 #43

Closed dtvgit closed 3 years ago

dtvgit commented 3 years ago

バージョン情報を見る手段がありません バージョン情報やコミットIDを表示して頂けると、問題解決の糸口に有効だと思います

xtne6f commented 3 years ago

今のところリリースのタグを作った日付をバージョン代わりにしていますが、 バイナリ自体に情報を含めたほうが確かに分かりやすいと思うので、追加する方向でいきます。

表示先は、基本的にはバイナリのファイルプロパティ(現在0.10.70.0になっている所)を想定していますが、 「EpgTimerSrv設定」や「EpgDataCap_Bon設定」のダイアログの隅あたりにも表示できれば便利かなと思っています。

手段としては、Commonフォルダの中にEdcbVersion.hみたいなファイルを作って、そこにリリースの日付などを追記(gitのある環境ならオプションでコミットハッシュを追記)する形で行きたいと思っています。TVTestがとっている手段と似たようなもの?です。 たぶん、多くの人はgitを使わずzipでソースをダウンロードして自ビルドしている気がするので、コミットハッシュの追記はオプションとしたいです。 (gitのあるなしで別のバイナリができると気になる人が出ると思うので)

追記するリリース情報の詳細はまだ詰めていません(フォークする人が毎回書き換える必要がないように自由追記の枠を設けるとか)が、なにか希望などあればよろしくお願いします。

kouhgithub commented 3 years ago

プラグインで確認できる形式にしてはどうかと・・

dtvgit commented 3 years ago

xtne6fさんが実装しやすい方法で、バージョン情報を見ればどのバイナリなのかが確実に特定出来ればよいと思います

xtne6f commented 3 years ago

とりあえず commits/7f278db のような実装にしてみました。(不足あれば変更します)

リリースの日付などを設定画面の右下と、ファイルプロパティの製品バージョンに表示します ↓↓

version

ソースのVERSION_TAG定数を書き換えることで変更可能です。$ ./versionhash.sh edittag で自動化できます。 製品バージョンの4桁数字「0.10.70.0」は固定です。OSの仕様上この部分には制約があるので… Write_Defaultの設定画面なんかにも表示しようかとちょっと思いましたが、画面がうるさくなるので止めました。

オプションでコミットハッシュも追記できます ↓↓

version2 こちらはVERSION_EXTRA定数を書き換えます。$ ./versionhash.sh gen で自動化できます。

VERSION_TAGは各フォークがリリース時に書き換え、VERSION_EXTRAはビルド時やローカルな変更時の書き換えを想定してますが、規則ではないので自由に弄ってください。自分はVERSION_TAGをリリース時(work-plus-s-{日付}タグを作るとき)に書き換えるつもりです。

プラグインでの確認、の意味に沿うかどうかわかりませんが、ファイルプロパティの情報はAPI的に取得できます ↓

std::vector<BYTE> buff(GetFileVersionInfoSize(L"確認したいアプリのパス", nullptr));
LPWSTR p;
UINT len;
if (buff.empty() == false &&
    GetFileVersionInfo(L"確認したいアプリのパス", 0, (DWORD)buff.size(), buff.data()) &&
    VerQueryValue(buff.data(), L"\\StringFileInfo\\041104b0\\ProductVersion", (void**)&p, &len))
{
    std::wstring versionText(p, len);
}

これはC++の例ですが、C#でも(悪くてもP/Invokeで)取得できるはずです。

xtne6f commented 3 years ago

上記で決定とします。