.NET Frameworkの設定ファイル復旧手順

.NET Frameworkの設定ファイル復旧手順について説明します。
このページの説明が必要になる対象の方は?   まず、「ダウンロード」にあるプログラムを今回、新規にインストールされる場合は「元の設定」がないので必要はありません。
(以前にインストールしたけれど、ほとんど使用していなかったなどの場合も同様です。)



本ページをお読みいただく必要があるのは、以前から該当プログラムをご利用いただいていて、下記で説明する「.NET Framework環境の変更」に掛かるバージョンアップを行なう時だけです。 (1プログラムにつき1回だけです。)
.NET Framework環境の変更」が済んだバージョンから、さらに以降のバージョンにバージョンアップを行なう場合も必要ありません。
このページ対象の作業で「不具合に関する問合せ」がありました。   このページでは「.NET Framework環境の変更に掛かるバージョンアップ」で引き継がれなかった設定ファイルを手動作業で復旧させることを説明しているのですが、 バージョンアップのインストールの時点で旧バージョン側の設定ファイルが上位フォルダごと消えてしまうという現象のようです。 このページの後半の方で説明しています。



「手動作業で復旧させる」という前に消えてしまっているので対応できないことになってしまうわけですから、 下記で説明するコピー元の設定ファイルはそのフォルダごと消えてしまっており、こうなると復旧ができません。



連絡いただいた件数から見ても非常にレアなケースのようですが、「どうするとこうなるか」が特定できておらず、アプリ側で回避する方法がありませんので、 「.NET Framework環境の変更に掛かるバージョンアップ」に該当する場合は、 「Local」フォルダ配下の「Excelでお仕事!」フォルダを事前に別の場所にコピーしておいていただくようにお願いします。

.NET Framework環境の変更の必要性について
「設定ファイル復旧手順」と題しておきながら、若干話を戻してしまいますが、まず、何でこのようなことが必要になったのかを説明いたします。



当サイトからダウンロードしていただいて運用していただいているプログラムでExcelVBAで提供しているものを除くと これらはMicrosoftの「.NET Framework」環境で作成しております。 これは古い呼び方だと「ランタイム」という理解でも一般的には良いと思います。
動作環境となるWindows自体にも複数のバージョンがあるように、「.NET Framework」にも複数のバージョンが存在します。



これらの当サイトで提供している各プログラムは当初の提供段階ではWindowsXPがまだ一般に運用されていた時代だったため、 「.NET Framework2.0~3.5」をターゲットとして開発・提供しており、Windows10も最初の段階ではこの環境で問題なく動作しておりました。



しかしその後、2018年秋にMicrosoftからサポートポリシーの変更が発表され、 「.NET Framework」はOS(Windows)の「付帯物」ではなく、無償ではあるものの単独プロダクトとなりました。
.NET Framework」自体も当然ながらバージョンアップされており、現在の環境では「.NET Framework4.5~4.8」が推奨されています。



当サイトで提供している各プログラムをインストールする場合で、そのPCに「.NET Framework4.5~4.8」がインストールされていない場合は、 必須コンポーネントとして、この確認メッセージが表示された上で「.NET Framework4.7.2」が自動的にインストールされます。
.NET Framework4.7.2確認



今回の.NET Framework環境の変更を行なわない場合で、そのPCに「.NET Framework3.5」がインストールされていない場合は、 「.NET Framework3.5(SP1)」のインストールが必要なのですが、この作業は自動的には行なわれず手間の掛かる作業が必要となっておりました。
2018年秋以降に発売されているPCはこの状態に該当します。



このため、当サイトで提供している各プログラムについて、.NET Framework環境の変更を行なうことになりました。



ここまでは、今回当サイトが行なった「.NET Framework環境の変更」の必要性に関する説明となります。

.NET Framework環境の変更に掛かるバージョンアップでの動作
これらの当サイトで提供している各プログラムのバージョンアップを行なう場合に.NET Framework環境の切替えが発生するのはプログラムに対して1回だけです。 その後にさらに新しいバージョンがリリースされた場合のバージョンアップでは.NET Framework環境は以前に切替え済みなので以下の説明の作業は不要です。 (設定内容は自動的に引き継がれます。)



では、.NET Framework環境の変更に掛かるバージョンアップで何が起きるかというと、インストール後の初回起動時に以前の設定内容が引き継がれず、 新規インストール時のような状態になってしまうということです。



「設定内容」といっても、それはプログラムによって異なります。プログラムごとの設定内容等はこのページの一番下に一覧で説明しています。
起動した時のウィンドウの位置やサイズのみというものもいくつかあり、これらは起動後にウィンドウ状態を直してしまえば済むので、以下に説明する作業は必要ないことになります。
また、起動画面で指定する簡単な「区分」等だけのものもあるので、設定内容の引き継ぎは特に必要がないという判断もあると思います。ご利用状態によって判断して下さい。 必要がなければ以下の作業は行なわずに、通常通りプログラムをご利用下さい。



「これまでは起動時に前回情報が表示されていたのに表示されなくなった」という判断でも構いません。

「設定内容」を引き継ぐ実際の作業
前段の説明が長くなり、申し訳ありません。
ここからが本題となる、前回起動の段階の「設定内容」を引き継ぐ具体的な作業の説明です。



行なっていただくのは具体的には「設定ファイル」の「コピー」だけです。
但し、コピー元・コピー先ともに隠しフォルダ・隠しファイルになっているので、この隠しフォルダ・隠しファイルを表示させるWindows側の設定変更と、 コピー先のフォルダ・ファイルを作成しておくという事前作業があります。



事前作業
  • 「エクスプローラ」のリボンの「表示」タブにある「ファイル名拡張子」と「隠しファイル」にチェックを付けた状態にして下さい。
    エクスプローラ
    これを行なわないと下記で説明する「AppData」以下のフォルダが「エクスプローラ」のフォルダツリーに表示されません。
    なお、この「ファイル名拡張子」と「隠しファイル」のチェックは、Windowsの初期値としては両方ともにチェックは付いていませんが、 別の用途で利用者が変更している場合があります。
    今回の一連の作業が完了したら、ここでの変更は元に戻して下さい。
  • この下で「設定ファイルの場所」を説明していますが、先頭コラムでも説明している通り「Local」フォルダ配下の「Excelでお仕事!」フォルダを事前に別の場所にコピーしておいて下さい。
  • 今回対象となるプログラムのバージョンアップのインストールは行なっていただいて、その後に該当プログラムを起動させて、すぐに閉じて下さい。 これを行なわないとコピー先のフォルダ・ファイルが作成されませんので、コピー作業が行なえません。



設定ファイルの場所(フォルダ)の構成(理解)
「設定ファイル」のファイル名は「user.config」で固定されています。
次の作業は、コピー元・コピー先のフォルダの場所の確認ですが、まずそのフォルダ階層を説明します。
フルパスでは横に長くて解りにくいので「ユーザー名」以下は階層ごとに行をズラせて説明します。

C:\Users                                ←フルパス表示でない時は「ユーザー」と表示される
    \[①ユーザー名]
        \AppData
            \Local
                \Excelでお仕事!
                    \[②製品名+.exe_Url_xxxxxxxxxxxxxxxxxx]
                        \[③バージョン]
鍵カッコ付きのフォルダ名は環境により変動します。
①ユーザー名
  ⇒WindowsにログインするユーザーアカウントID(名前)
    ※表示名(フルネーム)と異なる場合があります
②製品名+.exe_Url_xxxxxxxxxxxxxxxxxx
  ※製品そのものの他、.NET Framework等のバージョンごとに複数存在します
  ⇒製品名はプログラムの英数字名(下記一覧参照、長い製品名の場合はフォルダ名上では一部省略されることがあります)
  ⇒xxxxxxxxxxxxxxxxxの部分は英数字でランダムに採番されます
  ⇒インストール後の最初の起動時点で作成されます
③バージョン
  ※製品のバージョンアップごとに複数存在します
  ⇒「1.1.0.0」などバージョン値のフォルダ名となります
  ⇒インストール後の最初の起動時点で作成されます
  ⇒複数のバージョン値のフォルダが存在することがあります(後述)




設定ファイルの場所(フォルダ)の確認(コピー元・コピー先)
コピー元・コピー先のフォルダですが、同一の「製品名」のフォルダが2つあるはずです。(下記「サンプル」参照)
「エクスプローラ」の一覧が「名前」順になっていれば上下に隣接して表示されます。
「製品名」フォルダの配下の「バージョン」フォルダのバージョン値で新旧は確認できます。
この「バージョン」フォルダに「設定ファイル(user.config)」が配置されています。
なお、コピー元と判断された「製品名」フォルダの配下に「バージョン」フォルダが複数存在することがあります。 これは、.NET Framework環境の変更に掛かる前の段階で既にバージョンアップが行なわれている場合に、 初回のインストール以外のバージョンのフォルダが作成されるためです。 この場合は、バージョン値を元にその中での最終バージョンのフォルダをコピー元として下さい。
コピー先の方の「バージョン」フォルダは下記一覧にあるバージョン値かそれ以降であるはずです。 また、フォルダやファイルのタイムスタンプがインストール後の初回起動時点の日時になっているはずです。
コピー元・コピー先の誤りがないことを確認して下さい。



設定ファイルのコピーの実際
ここまでの確認ができたら、実際の「コピー」作業を行ないます。
コピー元・コピー先ともに同一のファイル名なので「上書きコピー」の動作になります。
一旦、コピー先の「設定ファイル(user.config)」を適当なフォルダにコピーして「やり直し」に備えて下さい。
準備が完了したら、コピー元の「バージョン」フォルダの「設定ファイル(user.config)」をコピーし、 コピー先の「バージョン」フォルダを選択して貼り付けて下さい。 この際に「上書き保存」に関する確認メッセージが表示されるので「はい」を選択すれば「コピー」作業は完了です。
後は該当プログラムを起動させて動作確認して下さい。

設定ファイルの場所(フォルダ)のサンプル
※「テキストコピーツール(VBTextCopyTool1)」でのサンプルになります。
  「製品名」フォルダのフォルダ名の"...exe_Url_"から右側部分はインストール後初回起動時のランダム発生値です。
このようなフォルダ階層になっています。

C:\Users                                ←フルパス表示でない時は「ユーザー」と表示される
    \[Windowsユーザー名]
        \AppData
            \Local
                \Excelでお仕事!
                    \VBTextCopyTool1.exe_Url_4j5dl5teuadsrvtdlhx0v1upvky0znq0
                        \1.0.6.3        ←これまで利用していたバージョンのフォルダ  ※コピー元
                    \VBTextCopyTool1.exe_Url_jcfo1qlc3n1wlxz0throgieghqabqidc
                        \1.1.0.0        ←今回インストールしたバージョンのフォルダ  ※コピー先



フォルダツリーの表示で「製品名」フォルダのフォルダ名は、一部が英数字のランダム値ですので「上にある方が古い」という判断はできません。 かならず配下の「バージョン」フォルダを確認して新旧を判断して下さい。

この作業の対象となるプログラム
このページの説明の対象となっている.NET Framework環境の変更が発生するプログラムの一覧です。
プログラム名 製品名 .NET
最終Ver
.NET
開始Ver
設定保持される内容 コピー
推奨
通常使うプリンタの変更 ChangeDefaultPrinter1 1.1.3.2 1.2.0.0 選択プリンタ等
ファイル名の条件設定による一括変換 ChangeFilename1 1.0.3.2 1.1.0.0 起動ウィンドウ位置のみ
タイムスタンプ変更ツール ChangeTimeStamp1 1.0.1.1 1.1.0.0 起動ウィンドウ位置のみ
C++キーワード使用一覧 CPPSearchKeywords 1.0.6.2 1.1.0.0 各画面項目
スタートアップ遅延起動プログラム DelayedStartUp1 1.0.1.3 1.1.0.1 要否、ファイル名、
遅延秒数(各3件)
ExcelSQLServerツール ExcelSqlServerTool1 1.0.6.3 1.1.0.1 除外桁数
ExcelVBAモジュール状況一覧 ExcelVBAMakeModuleList 1.0.4.1 1.1.0.0 タイトル・起点フォルダのリスト
ExcelVBAキーワード使用一覧 ExcelVBASearchKeywords 1.0.5.2 1.1.0.1 タイトル・起点フォルダのリスト、
他画面項目初期値
シンプルJPEGビューワ JPEG_VIEWER1 1.4.6.0 1.5.0.1 各画面項目、ライブラリ情報(20)
  ⇒タイトル、配置リスト、現在位置
Excelテンプレート・アドイン作成 MakeExcelTool1 1.0.9.3 1.1.0.0 各画面項目
シンプルなテキストリーダー SimpleTextReader1 1.1.2.1 1.2.0.0 各画面項目、ライブラリリスト
テキストキーワード使用一覧 TextSearchKeywords1 1.0.4.2 1.1.0.0 タイトル・起点フォルダのリスト、
他画面項目値
VB.NETソースファイル退避 VBCopySourceFiles1 1.2.3.1 1.3.0.0 各画面項目
VB.NETキーワード使用一覧作成3 VBSearchKeywords3 1.1.9.2 1.2.0.0 タイトル・探索フォルダ情報のリスト、
他画面項目値
VB.NETキーワード使用一覧作成4 VBSearchKeywords4 2.0.5.3 2.1.0.0 タイトル・slnファイルのリスト、
他画面項目値
テキストコピーツール VBTextCopyTool1 1.0.6.3 1.1.0.0 各画面項目、コピーパラメータ群
シンプルなパスワード管理ツール2 WinSimplePasswordManager2 2.0.2.2 2.1.0.1 オプション設定項目等多数、
MDB所在フォルダ
※実際の管理データはMDBに収容
   任意操作のバックアップ機能有り
◎※



「コピー推奨」の説明
-:前回使用状態を再現させる必要性があまりないと思われるプログラム
△:設定項目の再登録が容易なので、必要があればコピーを行なうレベルのプログラム
○:同じ設定で繰り返し利用することが多いプログラムなのでコピー作業を推奨する
◎:設定項目にプログラム利用上で重要な項目があるのでコピー作業を強く推奨する

不具合連絡(問合せ)がありました。
今回の「.NET Framework環境の変更に掛かるバージョンアップ」で、バージョンアップ後の初回起動時にエラーとなり正常に起動できないという連絡(問合せ)が2件ありました。 1件目の方はその後の状況調査に同意いただけなかったので進展がありませんでしたが、2件目の方からは状況の連絡がいただけており復旧ができましたので、その結果を元に説明いたします。 1件目の方もエラーメッセージは2件目の方と同じです。
(この不具合関連情報の追加時点では対象バージョンのリリースから約6ヶ月経過しています)



発生しているプログラムは「シンプルなパスワード管理ツール2」で以下のようなエラーメッセージが表示されています。

システムエラー(例外)が発生しました。
オブジェクト参照がオブジェクト インスタンスに設定されていません。
WinSimplePasswordManager
シンプルなパスワード管理ツール2
ご連絡をいただいた内容によりますと、上記で説明している「設定ファイルの場所」での「Local」フォルダ配下の「Excelでお仕事!」フォルダが無いとのことです。当方ではこの事象の再現はできていませんので「どうするとこうなるのか」が特定できていません。



最初のインストール後の初回起動ではないので設定ファイルから前回閉じた時点の設定値を読み出して起動する仕組みです。この時に対象アプリの設定フォルダより1つ上位のフォルダである「Excelでお仕事!」フォルダがないことで設定の読み出しに失敗し、上記のエラーとなったと推測しています。
当サイトやVectorからダウンロードできるこれらのプログラムは相当数ダウンロードいただいており、今回の「.NET Framework環境の変更に掛かるバージョンアップ」も相当多いはずなので、問合せが非常に少ないのは何かの「レアケース」なのだろうと思います。



Local」フォルダ配下の「Excelでお仕事!」フォルダがなくなった理由は、 旧バージョン側のアンインストール動作で旧バージョン側の設定フォルダの他に他のアプリが利用されていないというような判断で、「Excelでお仕事!」フォルダ配下に他のサブフォルダがないために「Excelでお仕事!」フォルダ自体も「不要」と判断されたのではないかと推測しています。
いずれにしても「.NET Frameworkのインストーラ」側で発生している現象であり、アプリ側では回避対応ができません。



「シンプルなパスワード管理ツール2」の場合、登録されたデータは独自作成したMDBファイルに収容され、このMDBファイルは任意にバックアップもできるし、バージョンアップやアンインストール時に勝手に削除はされない仕組みなので復旧は可能ですが、このような事故の際は利用者様に作業のご負担が発生してしまいます。
「シンプルなパスワード管理ツール2」以外の場合はこのページの説明での「コピー元の設定ファイル」がないわけですので、上の表での設定内容は事前に別の場所にコピーしていない場合は手作業での再登録になります。



いずれにしてもこのような場合は当方に問い合わせて下さい。まずは新規インストール状態であっても起動できる状態に持って行かなければなりません。問合せ方法はこのページの下の方で案内しています。

開発サイドの話....
当サイトからダウンロードしていただいて運用していただいているプログラムの移行に関する説明は以上なのですが、開発側でやっていることの説明をある程度ですが付け加えます。 当方にとっての「備忘録」でもあります。



.NET Framework環境でのプログラム開発としては、長い間「Visual Studio 2010」で開発しておりました。
ですが、
  • 新しい.NET Frameworkバージョンでの開発ができない
  • 古い「Visual Studio」のマイクロソフトのサポート切れ
という状況になってきて対応が必要になりました。



Visual Studio」はバージョンアップということではなく、複数のバージョンの「Visual Studio」が同一PC上で共存できます。
Visual Studio 2010」は存続させたまま、新しい「Visual Studio」は「Visual Studio 2017」から試用を開始しておりました。



実際に「移行すること」を決断したのは「Visual Studio 2019」であり、時期としては2021年秋です。
Visual Studio 2010」で開発していたプログラムで、例えば今回、移行を行なった上の一覧の15本についてだと、 環境としては「2010」側から「2019」側にプロジェクト単位にコピーを行ない、 「2010」側のプロジェクトはバックアップとしてそのまま残してあります。
2019」側の作業としては、VBソースコードを変更しなければならないものはありませんでした。



一方、セットアッププロジェクトについては互換がなく、「2019」側は作り直しになりましたが、 組み立てやプロパティ項目などは「2010」側とほぼ変わらないので混乱はありませんでした。
但し、セットアッププログラム自体は「Visual Studio 2019」本体には含まれておらず、追加インストールとなりました。



セットアッププロジェクト自体は作り直しであっても動作すれば新規のインストールは心配ないのですが、 既存ユーザーでのバージョンアップの動作は心配事であり、動作確認が必要となります。
確認が必要な項目は、
  • ①プログラムが登録済みプログラムとしてバージョンアップされる
  • ②従来そのプログラムで利用していた設定環境が新しいバージョンに引き継がれる
この2点です。(今回はユーザーレベルの機能としての「バージョンアップ」は含まれていない)



このうち、①はセットアッププログラムの役割りであって、インストール済みプログラムに対して新しいバージョンをインストールし、バージョンアップとして更新されるかで確認できます。 これについては「UpgradeCode」などを揃えることで解決できました。
一方、②は新しいバージョンの本体プログラムを最初に起動した時の動作であり、「製品名」フォルダが引き継がれずに別個に作成されてしまうという結果になりました。 結果としては、開発時の.NET Frameworkバージョンが同一ではないため、同一の「製品」として判断されないものと思われます。



開発環境の方はさらに「Visual Studio 2022」に移行させています。