「タイプ初期化子が例外をスローしました」という不吉なエラー

午後6時起床、晴れ。朝食は黄な粉餅中1個、かき餅4個。ネットアクセスがめっちゃ遅くなっている。WIMAXから3日間で10GBを超えたという通知が入っているので、これだろう。昨日は一日仕事していたし、そんなに使った覚えはないのだが画像が多かったのだろうか?スピードWiFiの通信量カウンタでは前日までの3日間で9.85GBとなっている。誤差があるので多分キャリアでは10GBを超えたのだろう。

昨夜は電源をすべて落として寝たつもりだが、ネットには接続した状態になっていてPCもスタンバイ状態のままだった。スタンバイではほとんど通信量は増加しないはずだが…WiFiを盗聴されているのだろうか?多分この制限は一定時間が経過すると解除になったはずだが… ⇒翌日の午後6時から午前2時までだ。現状では画像がほとんど表示できない。午前2時を回るまではできるだけネットにアクセスしないようにしてみよう。

インテリセンスのメンテナンスのために隠しフォルダ .vs を外に出したが、このフォルダはそれ以外の用途でも使われているので、インテリセンスの分だけ出すように構成変更しておく。 .vs\ZelkovaTree\v15 の下には  ipch と Server という二つのフォルダがある。ipchだけを外に出すようにしておこう。この設定は [ツール] → [オプション] →[テキストエディター] →[C/C++]→ [詳細]→[フォールバック位置]だ。

Visual Studio 2017 への移行作業はあと一息というところまで進んだ。まったくエラーなしでクリーンビルドすることができるようになっているが,インストール時にエラーが発生するという問題が残っている。パッケージに含まれるOCXが出来損なっているためと考えられるので、奥の手を使ってみよう。⇒「管理者として実行」が抜けていた可能性がある。Windows 10 でレジストリ登録できたので、多分今度はイケるのではないかと思う。ダメだ!失敗した。

自己登録失敗

エラーコードは-2147024770 = 0x8007007e。このエラーは「必要なモジュールが見つからない」ということなので、パッケージの内容が不足している可能性がある。.NETのバージョンということも考えられる。OCXの手動登録が可能かどうか見てみよう。先に、前回バージョンをアンインストールしてもう一度トライしてみる。結果は同じだ。ここでWindows の更新が入った。再起動が掛かるという。

Windows 10にインストールしてみよう。こちらでは特に問題なくインストールできた。Windows 7 でOCXのレジストリ登録を実行してみたが、前回と同じエラーになる。

読み込みに失敗

考えられるのは .NET のバージョンの問題くらいしか考えられないが、lenovo には .NET 4 までは入っている。必須コンポーネントを .NET 3.5 まで落としてみたが同じ。「必須コンポーネントをインストールしない」インストーラを作ってみたが、結果は同じ。以前Visual Studio 2010でビルドしたインストーラはインストールできたはずだが、もう一度試してみよう。⇒インストールできた。従って、問題はVS2010と2017の相違ということになる。

VS2010では必須コンポーネントは、①.NET Framework 2.0、②Visual C++ ランタイムライブラリ(x86)だが、VS2017では様子が変わってしまう。下図のように2つの項目に「!」!マークが付いている。

image

なぜ「!」のようなマークが付いているのか理由が分からない。また、「Visual C++ ランタイムライブラリ(x86)」はこのリストには現れない(現れる場合もあるが、そのときは「!」が付いている)。これはおそらく、これらのライブラリがこのマシンにインストールされていないか、ないし、使用不可となっているのではないかと推定される。

「必須コンポーネントをインストールするセットアッププログラムを作成する」をチェックした場合には、インストーラは環境に必須コンポーネントが存在しない場合には、それを「コンポーネントの開発元のWebサイトからダウンロード」するか、ないし「アプリケーションと同じ場所からダウンロードする」などの動作になるはずだが、そうなっていない。⇒※いや,作動しないのは「必須コンポーネントが存在している」ためとも考えられる.

ビルドオプションでAny CPUではなくWin32でビルドしてみたが、結果は同じだ。コンポーネントが不足していることが考えられるが、どう対処すればよいのか?Visual Studio 2017 の Microsoft Visual C++ 再頒布可能パッケージは VC_redist.x64.exeとして供給されている。.NET では .NET Core 2.2 と .NET Framework 4.7.2 がダウンロードできるようになっている。.NET Core はクロスプラットフォーム用、.Net Framework は Windows 専用だ。

Visual Studio 2017 にはセットアッププロジェクトを組むための独自機能が備わっている。VS 2010 から引き継ぐことで既存セットアッププロジェクトも動作しているように見えるが、おそらくこれはサポート範囲外の動作なのではないかと推定される。VS 2017で新たにセットアッププロジェクトを起こす前に、この推測が正しいことを確認してみよう。⇒※この推測は間違っている.VS インストーラはVS 2012で一度廃止されたあと,Visual Studio 2013で復活している.これは拡張子 .msi のインストーラを生成するためのプロジェクトだ.

これを確認するためには、lenovo に VS 2017 のランタイムを導入してやればよいはずだ。まず、lenovo で VC_redistx64.exeを実行してみよう。いや、しかし、現在のビルドはターゲットがx86だ。これでは話が合わないのではないか?vcredist_x86.exeというのがあった。これを試してみよう。⇒「より新しいバージョンがインストール済み」というエラーになった。VS 2010 でビルドしたパッケージがインストールできるのだから、当然かもしれない。

VS 2017ではx86を指定しても実際にはx64でビルドしているのではないだろうか?x64のランタイムをインストールしてみる。ランタイムは問題なくインストールできたが、Zelkova Tree 2019のインストールでエラーが起きた。エラーコードは 2932.

インストールエラー

エラー:2932は Win32エラーコード一覧 でも見つからない。考えられるのはこのパッケージがx86でビルドされているという点だ。動作に変化が見られるので解決に多少近づいている感触はある。lenovo は64ビットマシンなのでx64で走らないということはないと思われるが、そのためには64ビットでビルドする必要がある。しかし、これでは同じパッケージがWindows 10機では問題なく走っていることを説明できない。

このマシーンにはV2.1.9.002をインストールしているので、同じものをlenovoにインストールしてみよう。いや、上書きしてしまっているので残っていない。最終版の2.1.0.008もインストールできた。現状を整理すると、

  • Visual Studio 2017 でビルドしたパッケージをWindows 10にインストールできる。
  • Visual Studio 2017 でビルドしたパッケージをWindows 7にインストールできない。
  • Visual Studio 2010 でビルドしたパッケージをWindows 7にインストールできる。

という状態になっている。Visual Studio 2017 は Windows 7 SP1にはインストールできる。lenovo のOSはWindows Home Premium SP1だからインストールできるはずだ。lenovoにVS 2017をインストールしてやればおそらくZT 2019もインストールできるようになると推定される。それを試してみるしかないのではないか?

ただし、これをやるとlenovoに欠けているのは何か?ということを突き止めるのが難しくなるかもしれない。仮にWindows 7 SP1でZT 2019が走ることが確認できたとしても、おそらくXPでそれを走らせることは難しい/不可能なのではないかと推定される。従って、XPをサポート範囲に含めるとしたら、少なくともVS 2010でビルドする環境を維持する必要があるのではないだろうか?つまり、VS2010でビルドした版とVS2017版の2つのバージョンを並列させる必要があるかもしれない.

32ビット版と64ビット版を並行リリースするというのは当初からの既定だが、問題となるのはVS 2017では32ビット版を生成できないのではないか?という点だ。現行ではAny CPUでビルドしているので生成されるコードは32/64のいずれでも走るはずなのだが…だとすればXPでも走行するということになるのではないか?いや、少し違うかもしれない。

VisualStudio で実行ビット数を変更する

DLL, GC, OCX のターゲットプラットフォームは「Windows 10」に固定されている。VBのターゲットCPUは可変でAny CPU/x86/x64から選択できるが、現在の設定はx86になっている。従って、出力はx86になっているものと思われる。ただし、構成マネージャではDLL, GC, OCX はWin32、VBはAny CPUになっていてこれらは変更できない。VB のターゲットCPUをAnyCPUに変えてビルドしてみよう。⇒変化はなかった。

いや、そもそも、DLL, GC, OCX のターゲットがWindows 10 固定になっているのだから、何をやっても無駄なのではないか?Visual Studio 7 ではどうなっているのか見てみよう。Visual Studio 7 ではリンカー→詳細設定→対象コンピュータでx86/x64/MIPSなどを任意に選択できるようになっている。いや、これはVS 2017 でも同じだ。

相違点としては、VS 2017の場合には全般タブに「ターゲットプラットフォーム」という項目があり、「Windows 10」に固定になっているという点だけだ。しかし、クロスプラットフォームを謳いながら「Windows 10」に固定というのはどういうことなのだろう?VS Community だからだろうか?VS 2017のターゲットプラットフォームが Windows 10 に固定というのであれば、そもそもVS 2017でビルドしたモジュールを Windows 7 にインストールすることは不可能だ。

そうなると残る課題は、Windows 7 にVS 2017をインストールした場合にどうなるか?という問題だけになる。これをやってみるしかないだろう。Windows 7 にVS 2017がインストールできれば、そこで生成されたビルドがWindows 7で実行できない、ないしインストールできないということは考えられないから、実質的にVS 2017でビルドしたモジュールがWindows 7で実行可能ということになる。これはWindows 10にVS 2017をインストールした場合の結論と矛盾することになる。

果たしてどういうことになるのか?やってみれば分かることだ。⇒まず、Windows の更新から始めよう。ネットにこんなのがあった。

句読点、。から,.へのIMEでの設定変更が,Officeのみ反映されない.

予測変換を止めるなどのことをやってみたが、変化なし。「Officeを再インストールしてみる」、「別のアカウントを使ってみる」などのあいまいな回答ばかり。予測変換を止めても動作はあまり変化していない。一文字「あ」と入力しただけで変換候補がぞろぞろ出てくる。使い辛くて仕方ない。うるさい誤変換報告の通知は相変わらずだ。

誤変換データを送信しないようにするには

Windows の設定→プライバシー→手書き入力と入力の個人用設定で「あなたに関する情報の収集」をオフにする。これで止められるかもしれない。もう一つ、「プライベートモード」というのもある。これは「文字入力の変換履歴を一時的に無効にする」というもののようだが、オンにしてみよう。⇒「Google 日本語入力」というのがあった。

これを使ってみよう。⇒!やったー!「,.」が入るようになった!これで「誤変換報告の通知問題」も根絶できた.こんな解決があるとは夢にも思わなかった.やはり「競争」というものは必要だね.

「ワークロードの追加」を勧められたのでインストールした。これは Visual Studio Code のことではないだろうか?MSアカウントでサインインすることを求められたが、「あとで」でパスしておく。lenovo にVS2017用のレポジトリを送ろうとしたが、ディスク容量不足になった。lenovoのCドライブはdegginosにコピーしてあるので削除してもよいのではないか?安定版というところを削除してみよう。ここだけで10.4GBある。コピーしようとしているZELKOVA_2020は16.7GBだ。まだ42%しか完了していない.⇒完了した.

ドライブDからCにバックアップを移動して空き容量を増やし,ZELKOVA_2020をDドライブに移動する.⇒lenovo にVisual Studio 2017をインストールし,ZELKOVA_2020をコピーしてソリューションを開いたところ,セットアップ用プロジェクトが未サポートというエラーになった.どういうことだろう?このソリューションはWindows 10のVS 2017でビルドされたものであり,その中にはセットアップ用プロジェクトも入っている.

サポート外

インストールしたVS Community 2017のバージョンが異なるのだろうか?Windows 10にインストールされているのはV15.9.4だ.Windows 7にインストールされたのはV15.9.5で一つだけ上がっている.オプションの内容も少し異なる点がある.インストールされている製品もまったく違う.Windows 7には「ProjectServicesPackage Extension – 1.0」というものしか入っていないが,Windows 10には45本も各種のツールが入っている.この中にはProjectServicesPackage Extensionも含まれる.Windows 7にはVisual C++ 2017すら入っていない.これはかなりおかしい.インストール手順を間違えたのだろうか?

ソリューションを読み込んでみたが,4つのプロジェクトすべて「利用不可」になっている.考えられるのはMS アカウントでサインインするのをパスしたという点くらいだが…もう一度インストールし直してみる.「アプリと機能」で「変更」を選択し,再インストール画面を出した.明らかにインストール手順を誤っている.インストール項目にチェックを入れることを忘れていた.全部チェックしてフルインストールしておこう.いや,到底無理だ.50.1GBも必要になる.

Cドライブには21.3GBしか空き領域がない.この範囲でまとめることにしよう.①.NET デスクトップ開発環境,②C++によるデスクトップ開発,③ユニバーサルWindows プラットフォーム開発の主要3コンポーネントだけで20.68GBだ.

ルーターの通信量にはWiFiの所内通信まで入るのだろうか?通信量カウンタがぐんぐん上がっている.いや,上がっているとは言っても20GBのようなオーダーではない.それでもすでに7.57GBを超えている.いや,多分これはネットからダウンロードしているはずだ.とすれば逆に少な過ぎるような気もする…圧縮が掛かっているためだろうか?ダウンロードは完了したが,インストールの進捗を見るとまだ2%だ.相当な時間が掛かりそうだ.⇒終わった.問題が発生している.「Microsoft.Net.CoreUWP」がインストールできなかった.これは少なくともディスク容量の問題ではない.起動してみたが,相変わらずすべてのプロジェクトが「利用不可」になっている.

「修復」というオプションがあるので実行してみた.さらに5.79GBの容量が必要だという.ZELKOVA-2018-01を削除してみよう.14.3GBある.ダウンロードは比較的簡単に済んだが,インストールにメチャ時間が掛かりそうだ.まだ,3/546をやっているところで1%にも満たない.

不思議なのはこのダウンロードがどこから来たものなのか?という点だ.ルーターの累積通信量はすでに3日間の上限である10GBまであと2GBというところまで来ているのに1GBも増えていない…ようやく1%を超えた.通信量もじわじわと増加傾向にあるので,下手をすると10GBを超えてしまうかもしれない.

インストール完了した.ダメだ.今度こそと思ったのだが,まだアプリケーションがインストールされていない…どういうことだろう?ZELKOVA_2018をコピーしてZELKOVA_2019としてソリューションを開いたところ,ATLとMFCがないのでインストールする必要があるというのでインストールした.「x86用とx64用のMFCをインストール」と表示された.1.6GBくらいある.パッケージのインストール100%完了と表示したあとハング状態になっている.⇒完了した.

セットアッププロジェクトは非互換となっているが,それ以外のプロジェクトは正常にロードされている.ソリューションを閉じてZELKOVA_2020をもう一度開いてみる.⇒今度は読み込めた.ただし,セットアッププロジェクトは「非互換」となっている.Windows 10の方ではこのような表示はない.Windows 7では「アプリケーションはインストールされていません」となっている.

確か,インストーラ生成用のツールがあったはずだ.ウェブ履歴で見ると昨日1月10日の午前0時21分に「 Visual Stuido 2017でインストーラを作成する方法 – 自由になりたくて会社辞めました 」という記事が出てくる.多分これを参考にして,「Microsoft Visual Studio 2017 Installer Projects」をインストールしているのではないかと思う.多分これしかないと思われるので手順を書き留めておこう.

  1. Visual Stuido 2017 Community :ツール→拡張機能と更新プログラム→オンラインで「Installer Projects」で検索
  2. 「Microsoft Visual Studio Installer Projects」をダウンロード
  3. チェックボックスで右クリックすると「この拡張機能はすでにインストールされています」が出た.⇒いや,これは大間違い.Windows 10で操作していた.
  4. 「すべてのVisual Studio のウィンドウを閉じると変更が実行されます」→「閉じる」ボタンを押してパネルを閉じ,Visual Studio Communityを閉じるとVSIX インストーラが起動される.
  5. 「変更」ボタンを押す.
  6. インストール完了したら,パネルを閉じて再起動

VS Installer Projects はインストールされたが,セットアッププロジェクトは「非互換」のままだ.ともかく,ここでソリューションをビルドしてみよう.まず,デバッグモードでやってみる.このソリューションは一度Windows 10上でビルドしたものなのだから,エラーなしで通らなくてはならない.しかし,DLLプロジェクトのプロパティを見ると,「ターゲットプラットフォーム」は相変わらず「Windows 10」で固定だ.ということはビルドはできても走らないということなのだろうか?

しかし,それも考え辛い.開発環境の上で走らないとしたら,デバッグも糞もないからだ.もし,仮に開発環境(Windows 7)で走ったとすれば,リリース版が実機(Windows 7)で走らないというのもまたおかしい.もし,このリリース版がWindows 7上で走ったとすれば,ではWindows 10上で走るのかどうか?ということになる.まぁ,ともかくやってみれば分かるだろう.問題なく立ち上がってきた.

どうも前回エラーが出た時点でプロジェクトファイルないしソリューションファイルが書き換えられているようだ.構成マネージャで見るとセットアッププロジェクトが落とされている.もう一度オリジナルと差し替えて試してみよう.!ダメだ!以前として「アプリケーションがインストールされていません」のままだ.VS Installer Projects はインストールされている.考えられるのは,「VS Installer Projects」がWindows 10専用でWindows 7では非互換となっている可能性だ.

Visual Studio Installer は VS 2012からサポートされなくなっていたようで,復活したのは VS 2013の頃と思われる.シェアウェアのようだが,Advanced Installer for Visual Studio 2010 というのがあった.使えそうな気はするのだが… もう一つ,Windows Installer XML(WiX)というのがある.というか,どっちみち新しいプロジェクトを作るのならネイティブなプロジェクトを作った方が早いのではないか?

ファイル→プロジェクト→新しいプロジェクト→その他のプロジェクトの種類→Visual Studio Installer→Setup Projectで新しいセットアッププロジェクトを起こすことができる.ただし,これで新規セットアッププロジェクトを起こすとソリューションも新しい空白のソリューションに変わってしまう.いや,何かどこかでスイッチが入ったようだ.今度は読み込めるようになった.リリースモードでビルドできるようになったが,走らせたところ例外が発生した.「アプリケーションはブレークモードになっています」という表示が出ている.

ブレークモード

「タイプ初期化子が例外をスローしました」というエラーはどこかで見たことがあるが,あまりよい兆候ではない.かなり致命的なエラーが起きていると考えた方がよさそうだ.もう一度デバッグモードで走らせてみる.Windows 10でも同じメッセージが出ている.こちらではエラーなしで走っていたような気がするのだが…このエラーは何度も出ていたような気がするのだが,ログは1件しか残っていない.「2018-03-06 応急措置としてページ設定→プリンタの設定ボタンを廃止」.

このときは,バックアップに戻って動作することを確認してから,再修正を入れることで切り抜けている.デバッグモードでは走っているようなので,タイミング的なものである可能性がある.ターゲットをAnyCPUからWin32に切り替えて動作するようになった.これまでずっとAnyCPUで通してきたのだが…修正箇所は2箇所ある.IDEのツールバーとVBのプロパティ→プラットフォームだ.

Windows 10ではこれまで通りの設定で少なくとも一度はリリースモードで走っていたという気がするのだが…実際,それを確認してからインストールして動作を確認しているはずだ…なぜそれができなくなってしまったのか?特にWindows 10では何も変更していないつもりなのだが…ともかく,同じことをWindows 7でもやってみよう.

コメントを残す

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

CAPTCHA