2017年4月29日土曜日

PC 古いアプリを最新環境で動かす手品

皆さん、 パソコンを弄っていて、 古いアプリが使いたい時ってありますか?。
例えば、 .Netframework 3.5 が必要ですって言われて、やって見たが、上手く行かない とか。
それはそれで、 ちゃんと、導入すれば良いのですが、
こんな対処法もある と言う ご紹介 です。


新しいパソコンを手にしたが、古いアプリを使いたい!。
でも、何だか、難しい表示が出たけれど、ちゃんと対処出来ない!。
例えば、 .Netframework 3.5 が必要ですって言われたり ... 。

普通は、この様な場合、 .Netframework 3.5 を導入して対応に当たる訳ですが ... 。
Windows 10 には、 標準では入っていませんので。


でも、こんな方法も有ります。

例えば、 そのアプリが xxx.exe と言う名のものだとしましょう。
そして、 それ以外は、問題なく動いていて、 それだけが .Netframework 3.5 を要求しているとします。
これに、 xxx.exe.config と言う名のファイルに おまじない を追加で入れてあげます。  後で詳しく書きます。.
すると、あら不思議! 動きます。  きっと。

                       きっと と書いたのは、 うちの環境には、全て 3.5 も入っているので確証がないのです。
                       でも、もし、.Netframework の導入が上手く行かないケースでは、対策のひとつになると思います。


大前提として、
そのアプリが .Netframework 3.5 を使って書かれている事が条件です。
つまり、 実行すると、 .Netframework 3.5 が必要ですって言われるもの だけ です。



先ずは、その実行ファイルが入っている場所(フォルダ)を確認して下さい。
Program Files と言うフォルダの場合、 管理者での作業が必要になります。



そして、 その 実行ファイル が Some.exe と言う名称だとします。
                      Some. の部分は 対象のアプリ固有の名称が入ります。

  但し、 これから書く 作業 は、.Netframework 3.5 のものを 強引に 4.x 系 *1 で動かす と考えて置いて下さい。
  特に、 既に、 Some.exe.config と言う名称のものがある場合、
  その中は、アプリを動かす為の 重要な 情報が記録されているので、
  訂正する事によって、動作が正常でなくなる場合もありますので、 必ず、元に戻せる様に留意して下さい。

          4.x 系 *1 : 例: 4.5 4.6 4.7 等。.


もし、 このフォルダの中に
Some.exe と一緒に、 Some.exe.config と言う名のファイルが無ければ、
本投稿 最後に書かれている内容を その 名称 で作って保存します。  (このフォルダの中に です。)

   最後に書かれている内容 をコピーして、 メモ帳 (notepad.exe) で ファイルの種類 を すべてのファイル (*.*) にして、
  Some.exe.config の名称で保存します。
  或いは、 以下の ページ にある Some.exe.config をダウンロードして、名称を変更します。
                                     Program(Config) Some.exe.config
  保存場所は Some.exe と同じフォルダ内です。


もし、 Some.exe.config と言う名称のものがあって、

<startup> に続く行に <supportedRuntime version="v2.0.50727"/> がある なら、
その上に、 <supportedRuntime version="v4.0" /> と言う行を挿入します。


<configuration> の行がない なら、
<?xml version="1.0" encoding="utf-8" ?> 直下に、 以下のブロック(6行)を挿入します。
<configuration>
    <startup>
        <supportedRuntime version="v4.0" />
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

<configuration> の行があり <startup> の行がない なら、
上の記述を参考に、 <configuration> 直下に、 <startup> のブロック(4行)を挿入します。


これらの作業は、専門的ですので、 元のファイルがある場合には、 必ず、
これを 別名 Some.exe.config.bak と言う様な 名称にして、残して置いて下さい。  シツコク何度も書きますが ... 。.
       (万一、問題が発生した場合には、これを元の状態に戻す為に、 です。)



また、 アプリの作り方によっては、完全互換で無いかも知れません。
細部の挙動や表示が異なるとか、本来はエラーを吐かない箇所でエラーを生むとかの、可能性もありますので、
実施後、表面的に問題がなくても、 その辺りには気を配って置いて下さい。



如何ですが?。
上手く動けば、 拍手を、 ご自分にして上げて下さい。

      駄目だった方には、 貴重な お時間を潰してしまい、 申し訳ありませんでした。
      早速、元に戻して、 .Netframework 3.5 を導入して下さい。.



[補足]
この様なアプリは、 何分、昔の環境  (OS) に合わせて作られていて、
何かと、問題点含み な もの です。
可能な限り、 最新環境用のものを 代替え導入 する事 をご検討下さい。

この投稿は、 旧態然 のアプリ の継続使用を勧める為のもの ではありません。





お詳しい方向けの参考資料です。

参考 URL : https://msdn.microsoft.com/ja-jp/library/jj152935(v=vs.110).aspx

File Encoding : UTF-8 with BOM
NewlineCharacter : CRLF
Ext. : .exe.config
Some : Executable Name (SameNamed)
Type : xml .


ファイルの内容  Some.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" />
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>


参考:
.Netframework 3.5 を対象とした Visual Studio 2008 SP1 (Visual Basic)  で作られた 実行ファイル xxx.exe に対して、
Windows 10 version 1703 .Netwramework 4.7 及び 3.5 共存の環境下で、
xxx.exe.config ファイルを作成・配置し、 これを実行して、確認しました。
問題なく、 .Netframework 4.7 を利用して 3.5 同等 の内容で動きます。
また、 この xxx.exe は xxx.exe.config が無い状態でも稼働し、 その場合には 3.5 そのもの が使われます。.



0 件のコメント:

コメントを投稿