切り株は残った

2019-02-06版という1年半前のバージョンに戻ることに決定した.これが我々のスタート台となる切り株だ.この夏の連日の炎暑で唐沢川の土堤の桜が軒並み枯れかけている.この桜は40年前(わたしが東京で暮らしているころ)に若かりしころの友人Oが青年会議所理事長の職にある時期全滅しかけていた桜並木を復活させたものだ.いまは,歴代がそれを引き継いでいるので多分大丈夫だろうとは思うが…さて,我々もこの倒壊したゼルコバの木に残った切り株からもう一度再スタートすることにしよう.事実上これが最後の挑戦になることだけは間違いがない.

この版ではまだ「基準ノード配偶者近接配置」の修正が収束していないものと思われるが,これは一時置いて,「安定版」の確立に当面は注力することにする.目標は11月8日(立皇嗣の礼挙行)までに公式リリースすることとしておこう.「安定版」とは,標準的かつ包括的なテストをすべてクリアしたものと定義される.しばらく遠ざかっていたので「標準的な包括テスト」で何をやっていたのかも忘れてしまっているが,主なテストはヘルプメニューに入っているのですぐにでも掛かれるだろう.この版では最小限,最新版のWindows 10搭載64ビット機で動作することが求められる.開発機はこの条件を満たしているだろうか?Windows UpdateすればOSは最新版になるはずだが,開発機はネットには常時接続していない.チェックしてみよう.開発機のOSは

Windows 10 Home バージョン: 1909 インストール:2020/02/11 ビルド:18363.1082

だ.タブレットは

Windows 10 Home バージョン: 1903 インストール:2020/03/17 ビルド:18362.900

でインストール日は遅いのにバージョンは古くなっている.現在 Windows 10 の最新バージョンは2004になっている.標準テストはやはり開発機でやるしかないので一度ネットにつないでアップデートするしかないだろう.Bluetoothテザリングなら複数機に接続できる.2004のアップデートは始まっているようだが順番があるようだ.手動で実行することもできるようだが,そこまでやるまでのことではないように思われるので(むしろ1909のユーザの方が多いのでは)自動でアップデートされるまで待つことにする.

アップデート時の不具合に備えてFileRepository(ドライバーのバックアップ)をコピーした.回復ドライブも作っておこう.⇒Windows Updateが進行中なのでシステムのバックアップはできない.どうも相当な時間が掛かりそうだ.システムイメージのバックアップ機能はWindows 10では非推奨になっている.Windows 10ではファイル履歴でバックアップという方法が導入されている.これはサイトのバックアップのように定時にバックアップするという方法だが,果たして必要だろうか?⇒回復ドライブだけ作っておくことにする.回復ドライブはコントロールパネル→回復でアクセスできる.16GB以上必要と出ているが,16GBのUSBを試してみる.これもまた相当な時間が掛かりそうだ.

ディスク領域が逼迫している.「Windows Updateのクリーンアップができない」という問題があり,削除できない不要なファイルが4.5GBくらいある.OSを再インストールすれば解決するという話だが,それもかなり厄介だ.参考になる記事があったので試してみる.

https://answers.microsoft.com/ja-jp/windows/forum/all/windows/5a67137b-5ee4-4cb0-8392-483de6d83174

再開発版のリリース版を起こしてみよう.バージョン番号は2.2.0.000とした.製品名=Zelkova-Tree 2021,主題=系図作成ソフトゼルコバの木2021,タイトル=ゼルコバの木正式版 Ver 2.2.0.000とする.製造者URLもAYANETからhttps://zelkova-tree.net/WordPress/ に変えた.⇒DLLでエラーが出た.

error D8016: コマンド ライン オプション ‘/ZI’ と ‘/GL’ は同時に指定できません

/GLはプログラム全体の最適化,/ZIはデバッグ情報の形式エディットコンティニュのプログラムデータベースという意味のようだ.リリース版ではデバッグ情報はほとんど不要と思われるが,プログラムデータベース(Zi)としてみよう.⇒通った.GCで警告が出ている.

warning MSB3284: タイプ ライブラリ “f10efde4-db94-11d2-b863-289605c10026” バージョン 1.0 のファイル パスを取得できません。ライブラリは登録されていません。 (HRESULT からの例外:0x8002801D (TYPE_E_LIBNOTREGISTERED))

バージョン番号を振り間違えていた.

ERROR: Invalid product version ‘2.2.0.000’. Must be of format ‘##.##.####’

2.2.0000としなくてはならないということだろう.msiファイル名がZelkovaTreeSetup.2.1.0.016.msiのままになっている.これはどこで決めていたのだろう?⇒VBのプロパティ→発行→発行するバージョンではないか?⇒いや,ここを変えても変化しない.セットアッププロジェクトのプロパティ→Output file nameという場所がある.⇒インストーラがビルドできた.リリース版を走らせてみる.⇒まだスプラッシュパネルが出ている間にエラーで停止した.

image

OKを押しても連続して出てくる.サンプルはタモリさんちの超複雑な家系.ZEL.TRIBEBOX::GetMajorTribeChainで出している模様だが,呼び出し履歴では確認できない.これはおそらくデバッグ用のチェックボックスではないかと思われる.checktribesenzoというデバッグ専用関数が呼び出されている.確かにそういう作りにはなっているが,非デバッグ時に呼び出されるとStop文で停止するようになっている.STOPマクロは非デバッグでも定義されているが,funcnameなどが未定義となるためコンパイル時エラーになる.⇒Stop文を廃止,ダンプ文に変えた.check = c,ないしcheck = 1が残留している.⇒一掃した.

回復ドライブの作成が完了した.14.4GBしか使っていないのでまだ5.5GB余っている.V2.2.0.000_R20201014というパッケージを作ってバージョンを確保した.プログラムはデフォルトでは製品名として登録したZelkova-Tree 2021というフォルダに保存される.

C:\Program Files (x86)\babalabo\Zelkova-Tree 2021\

おかしい.またSTOPボックスが出てしまった.ビルドしていなかったのだろうか?開発環境ではすでにボックスは出ない動作になっている.ビルドし直して再インストールしているのに動作が変わらない.かなりおかしい.アプリ登録されているのは一つだけだ.アンインストールして再インストールしてみる.⇒これで動作するようになったが,かなりまずい現象だ.インストーラのファイル名を変更していなかったのが敗因なのだろうか?VBのバージョン番号はおそらく無関係と思われるが…

ヘルプ→バージョン情報の内容も変化していない.⇒更新した.リビルドして再インストールしたが内容は同じままだ.つまり,プログラム自体の差し替えが実行されていない.Program Files(x86)を見ると12:50に生成したものが入っている.もう一度リビルドしてみよう.⇒ダメだ!アンインストールすれば入るのは確実とは思われるが,それでは持たない(クレームが殺到する).Program Filesの中身が変わっていないのだから動作するはずがない.UpgradeCodeも変えてみたのだが…RemovePreviousVersionはTRUEになっている.

EXEの名前もZelkovaTree2021.exeに変えなくてはならない.⇒VBのプロパティ→アプリケーションでアセンブリ名を変える必要がある.アセンブリ名をZelkovaTree2021と変えることでEXEの名前は変わり,ZelkovaTree2021.exeもProgram Filesに入るようになったが,元のZelkovaTree2019.exeも残っている.立ち上がって来るのは(おそらく)2019の方だ.ヘルプのバージョン情報もおかしい.バージョン番号とリリース日付だけ古い値のままになっている.

▲軟体動物2.zelのタイトルが軟体動物2.ZEL《頭足類家系図》となっているが,おかしい.

アプリが3つに増殖している.デスクトップ上にはアイコンは一つしか出ていない.すべてアンインストールして再インストールしてみた.今度初めてライセンスキーの登録画面が出てきた.

image

しかし,スプラッシュパネルの内容は古いままだ.

image

ライセンスキーは生成されているが,パネルに表示されているコードと一致していない.いや,これはそれでよいのかもしれない.ライセンスキーが生成されるのはデバッグモードのときだけだからだ.今度はバージョン情報も更新されているようだ.気になるのは画面が下の方で切れてしまっているという点だが…

image

スプラッシュのタイトルはMyForm.Info_Titleというところから引いている.MDIParent.vbで一括して定義しているところがある.ここを修正する必要がある.

▲ライセンスキーファイルがデスクトップ上にあると上書きされない.

リリース版をビルドしてバージョン番号を上げるときに必要な編集操作のリストを作っておこう.

  1. プロパティ画面でセットアッププロジェクト→Version をインクリメントしてProductCodeを更新する Titleのバージョン番号も更新しておく
  2. セットアッププロジェクト→プロパティ→Output file nameのmsiファイル名を更新する
  3. ライセンスヘッダファイルで※ライセンス番号※とバージョン文字列を更新する
  4. ※アプリをデバッグモードで起動し,ライセンスコードとライセンスキーを取得してヘッダファイルに書き込む※
  5. MDIParent.vbファイルでInfo_Releaseと※Info_LicenceCode※を更新する⇒これは多分不要
  6. Z.OCXとDLLのリソースでVersionを更新する
  7. VBのプロパティ→アプリケーション→アセンブリ情報の中身(ファイルバージョン)を更新する
  8. リリース版をビルドする
  9. ※は所内版の場合は不要

▲Info_ReleaseとInfo_LicenceCodeはDLLから取得できるのではないか?それ以外の情報もDLLから取得している可能性がある.

どうも現状ではアンインストールする以外にインストールを実施する方法がないように思える.Visual Studio 2005辺りからmsi形式のインストーラを生成するセットアッププロジェクト機能が廃止されている.その代わりにVisual Studio Installer Projectsというのが導入された.⇒いや,どうもこれは単純に「復活した」だけなのではないかという気がする.アイコンも同じ,内部の構成も同じだ.ネット上にこんな質問があった.この記事は参考になる.

RemovePreviousVersions=True but previous version is not removed from the target machine https://social.msdn.microsoft.com/Forums/ja-JP/9ce5da29-3f37-4e7f-a548-1cbeb4a3e0a3/removepreviousversionstrue-but-previous-version-is-not-removed-from-the-target-machine?forum=winformssetup

どうもVBのプロパティ→アプリケーション→アセンブリ情報の中身を更新する必要があったように思われる.この情報はEXEの右クリックで出るプロパティの内容と同じだ.⇒この情報を更新して少なくともProgram Files のEXEのプロパティは更新されているように思われる.ただし,ヘルプのライセンスコード・バージョン・リリース日付などは古いままだ.確かにEXEは18:23に生成されているが,それ以外のDLL,OCXの時間は1~5時間も前だ.EXEとGC3.DLLは開発環境と一致しているが,それ以外は更新されていない.GC3.DLLはファイルバージョンを持っていない.Z.OCXは2.1.0.1というバージョン番号を持っている.DLL3.DLLのファイルバージョンは1.9.9.99で製品バージョンは2.0.1.925だ.どこからこんな数字を拾ってきているのか?

ネット情報によると,セットアッププロジェクトのVersionではなく「ファイルバージョン」が新しい必要があるということのようなので,どこでこれらの値を設定しているかを突き止めなくてはならない.⇒それぞれのリソースの中にVersionという項目がある.⇒対処した.これで4主要コンポーネントはすべてアップデートできるようになった.この他にInterop.ZelkovaZ3Lib.dll,AxInterop.ZelkovaZ3Lib.dll,ZelkovaTree2021.exe.configがあるが,これらはインターフェースが変化しない限り変動はないと思われるのでとりあえずこれでよいということにしておく.configにはバージョン番号はないが,他の2つには3.0.0.0という番号が振られている.

パッケージの中に複数のコンポーネントが入っているときに個別のバージョン番号を見て新しくなければインストールしないという(VS2005以来の)現在の仕掛けはわたしには理解できない.仮に異同がなかったとしても単純に上書きすればよいというだけの話ではないのだろうか?誰がこんなつまらないことを考えたのか?面も見たくはないが…ネットに情報があったからよいが,もしそれを聞いていなかったら,まだまだ手間取って,こんな小石にさえつまづいていたかもしれない…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA