対象のフレームワークについて

タグの編集
投稿者 ユキヒョウ  (社会人) 投稿日時 2016/11/23 15:22:12
今、VS2013を使用してデスクトップアプリ(WinForm)のメンテナンスを行っていますが、
これは元々はVS2008で作成したものです。
このため、このアプリの対象フレームワークは3.5(SP1)のままなのですが、
今後、フレームワークのバージョンを変更しようと思います。

変更したい理由は以下の通りです。
このアプリ(対象OSはWindows7~10で、)ではインストーラを用意しておらず、
直接実行ファイル(exe)を配付しています。
Windows7以降でも3.5(SP1)のフレームワークは使えますが、
何らかの理由で、ユーザのPCで3.5が無効化になっている場合、
ユーザ側でこれを有効化してもらう必要があります。
このため、今後は上位のフレームワークを提供したいと思った次第です。

もちろん、ユーザ環境にないバージョンのフレームワークであれば、
ユーザ側にこれをインストールしてもらう必要があるわけで、
ユーザ作業が極力少ないバージョンが一番望ましいのですが、
このような観点からも、上記環境でお薦めのバージョンがあれば
教えて頂きたく、よろしくお願い申し上げます。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/11/24 11:36:17
> 対象OSはWindows7~10で、
Windows 7 以降に限定する場合、最新版である 4.6.2 を選択できます。
Vista や Server 2008 がサポート外になりますが。

できるだけ多くの OS をサポート指定おきたい場合には、逆に
.NET 2.0 に下げて開発することで、Windows 98~Windows 10 までを
サポートできるようになります。(NT4 が対象外になってしまいますが)


> ユーザ作業が極力少ないバージョンが一番望ましいのですが、
であれば、ユーザー環境に合わせて複数のバージョンを提供するのも
手ではあります。XCOPY 配置なら尚のこと。
もちろん工数は増えるので、採算を考慮する必要はありますが。

ただ、.NET Framework の整備が必要なのは最初の一回だけで、
それ以降のリリースではアプリの更新だけで済むわけですから、
システム更新の際にあえて古いバージョンを使う事は、個人的には稀です。

Server OS のように、再起動が難しいケースにおいては、
あえて古いバージョンで済ませることもありますけれどね。


> 何らかの理由で、ユーザのPCで3.5が無効化になっている場合、
そもそも何らかの理由で無効化されているのなら、有効化してもらう前に、
その理由を明確にしておくべきでは無いでしょうか。

理由は分からないままとにかく有効化するという選択肢を採る手も
ありますが、どちらにせよ案件次第ユーザー次第という気がします。


> ユーザ側でこれを有効化してもらう必要があります。
結局は同じ事だと思いますよ。

Windows 8/8.1 の機能の有効化
 ☑ .NET Framework 3.5 (.NET 2.0 および 3.0 を含む)
 ☑ .NET Framework 4.5 Advanced Services

※4.5.1/4.5.2/4.6.x は別途インストールが必要
※4 は導入不可(4.5.x/4.6.x ランタイムでの動作は可能)
※1.0/1.1 は導入不可(2.0 ランタイムでの動作は限定的に可能)


Windows 10 の機能の有効化
 ☑ .NET Framework 3.5 (.NET 2.0 および 3.0 を含む)
 ☑ .NET Framework 4.6 Advanced Services

※4.6.1/4.6.2 は別途インストールが必要
※4/4.5.x は導入不可(4.6.x ランタイムでの動作は可能)
※1.0/1.1 は導入不可(2.0 ランタイムでの動作は限定的に可能)



> 上記環境でお薦めのバージョンがあれば
逆にお奨めしないのが、.NET 3.0 と .NET 4 ですかね。
どちらも中途半端なので。

自分なら 4.6.2 を選択するところですが、
本当に案件次第なので、一概には言えません。

事前にバージョンチェック用のスクリプトを配布しておき、
どのバージョンを使うかの落し所を探ることもあれば、
とにかくインストーラーで最新版を配置ということもあります。
あるいは ClickOnce 配置でインストーラーに任せてしまい、
細かい問題は自社のサポートデスクに任せるとか、あるいは社内の
セットアップ部隊で遠隔保守 or 全国行脚なパターンもありました。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/11/24 14:39:55
Windows 7 の機能の有効化
 ☑ .NET Framework 3.5.1 (.NET 2.0 および 3.0 を含む)

※3.5.1 とは 3.5 SP1 の事であり、Win8 以降の有効化にある 3.5 と本質的には一緒
※4 および 4.5/4.5.1/4.5.2/4.6/4.6.1/4.6.2 は別途インストールが必要
※1.0/1.1 は導入不可(2.0 ランタイムでの動作は可能)

---

一切、Windows の機能の有効化すら操作させたくない、ということになってくると、.NET Framework 自体がインストールされていない可能性もありえるのでどうにもなりません。

できるだけ触らせたくないという比率的な話なら、無効な環境がどの程度あるのか、実環境への事前調査が必要かと。.NET のインストールまで面倒を見てくれるような高機能なインストーラーを提供できるなら別ですが。


とりあえず CLR4 世代に関して言えば、可能な限り最新版を使うというのが私のお奨めです。
技術的には、CLR4 のインプレース更新を行っても、更新前に使っていたアプリはリビルド無しでそのまま動くというのが一点。
配布にかんしては、最新版はWindows の機能としては提供されていないというデメリットはあるものの、その分、OS ごとの導入手順の違いを考慮せずに済むので説明しやすいですから。

それに Windows 10 の場合、基本的には Windows Update が強制的に行われますしね。


その他、.NET Framework のサポート期限問題も考慮すべき事項でしょうね。
たとえば .NET 4/4.5/4.5.1 は、今年1月をもってサポートを終了していますので、
あえて 3.5 SP1 のままにしているケースもしばしば見かけます。


Windows 7 の場合:
 既にサポート期限切れ
  → 4
  → 4.5
  → 4.5.1
 2020年1月(OS のサポート期限)
  → 同梱の 2.0/3.0/3.5 SP1
  → 4.5.2
  → 4.6
  → 4.6.1
  → 4.6.2

Windows 8 の場合
 OS 自体がサポート期限切れなので .NET も期限切れ
  → 同梱の 2.0/3.0/3.5 SP1
  → 同梱の 4.5
  → 4.5.1
  → 4.5.2
  → 4.6
  → 4.6.1

Windows 8.1 の場合
 既にサポート期限切れ
  → 同梱の 4.5.1
 2023年1月(OS のサポート期限)
  → 4.5.2
  → 4.6
  → 4.6.1
  → 4.6.2

Windows 10 の場合
 2025年10月(OS のサポート期限)
  → 同梱の 4.5.1
  → 4.6
  → 4.6.1
  → 4.6.2
投稿者 ユキヒョウ  (社会人) 投稿日時 2016/11/24 16:54:44
ユキヒョウです。
アドバイスありがとうございました。
とりあえずは、3.5(SP1)で様子を見て、
今後、4.6.2への移行を考えたいと思います。

なお、
> 何らかの理由で、ユーザのPCで3.5が無効化になっている場合、

について確認したところ、クリーンインストールか何かをした時だということらしいのですが、
詳細は忘れた、とのことでした。

色々とありがとうございました。
今後ともよろしくお願い申し上げます。