- PR -

.NET Framework用インストーラについて

1
投稿者投稿内容
sarah
常連さん
会議室デビュー日: 2006/02/08
投稿数: 32
投稿日時: 2006-03-02 17:51
現在インストーラを作成しています。

.NET Frameworkの起動条件プロパティでSupportedRuntimesを設定によって
インストールされている.NET Frameworkのバージョンに対応させることが
できます。

SupportedRuntimes → 1.1.4322;2.0.50727

そこで質問なのですが、ここで指定する内容は必ずマイナーバージョンまで
記述する必要があるのでしょうか?ワイルドカード的記述は可能でしょうか?
そうじゃないとマイナーバージョンの変更があるごとにインストーラを作成
しなおす必要がでてきて面倒ですよね。

また別の質問なのですが、.NET Framework 1.1 と 2.0がインストールされて
いる状況で上記のようなインストーラを起動させた場合、.NET Framework 1.1
と2.0のどちらでプログラムが走ることになるのでしょうか?





じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-02 18:26
引用:

sarahさんの書き込み (2006-03-02 17:51) より:

そうじゃないとマイナーバージョンの変更があるごとにインストーラを作成
しなおす必要がでてきて面倒ですよね。


.NET Framework はそうマイナチェンジするわけじゃないので、面倒だとは思いませんが...
あとは、レジストリを調べるという手もありますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
sarah
常連さん
会議室デビュー日: 2006/02/08
投稿数: 32
投稿日時: 2006-03-03 09:26
そうですか。マイナチェンジが殆ど無いならば問題ないですね。
返答有難うございました。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-03-03 13:20
引用:

そうじゃないとマイナーバージョンの変更があるごとにインストーラを作成
しなおす必要がでてきて面倒ですよね。



えっと、マイナーチェンジがあって、SupportedRuntimes を書き換えないとならない
となったとしたら、インストール場所も異なるので、別のランタイム扱いになります。

なので、もし出てきたとして、対応するということになればインストーラだけではなく
アプリも再チェックしなければなりませんし、それで動作確認しないといけませんし、
app.config が絶対に書き変わることになるので、インストーラはいずれにしても
作り直すことになります。

なので、考える必要もないと思いますよ

引用:

また別の質問なのですが、.NET Framework 1.1 と 2.0がインストールされて
いる状況で上記のようなインストーラを起動させた場合、.NET Framework 1.1


どれを優先するかは、app.config の宣言順です。

<startup>
 <supportedRuntime version="v2.0.50727" />
 <supportedRuntime version="v1.1.4322" />
</startup>

と書かれていれば 2.0 -> 1.1 の順に検索します。
逆なら 1.1 -> 2.0 になります。

ドキュメントに明記されてますよ。
書いてない場合により上位のバージョンで動くかどうかは、新しい .NET ランタイムの構成次第...ですね

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-03-03 13:23
引用:

.NET Frameworkの起動条件プロパティでSupportedRuntimesを設定によって
インストールされている.NET Frameworkのバージョンに対応させることが
できます。



「対応させることができる」のではなく、対応するランタイムを限定する方向に働きます。

たとえば、SupportedRuntimes の指定を行っていなければ、1.x アプリは 2.0 ランタイムしかない状況でも動作します。

なので、特別無い理由が無いなら、SupportedRuntimes を指定しない方がよろしいかと。

動作保証云々は書面で指定すればよいことで、新しいバージョンのランタイムで動作確認がとれたら追認するだけでOKになります。


_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-03-03 14:47
とっちゃんです。

限定されるのは、app.Config の supportedRuntime ではありませんでしたっけ?
設定することで、指定バージョンのみになると記憶していたのですが?
(優先順位も設定できるし...)

それに対して、インストーラの SupportedRuntimes はインストーラ(正確には
使っているInstallerクラスのカスタム動作)の動作保証バージョンの指定だったと
記憶してるのですが。。。

こちらは、基本的には Installerクラスを安全確実に動かせるバージョンを指定する
ためのものなので、条件設定が非常に厳しくなっていると思っていたのですが。

Installerクラスを使っていないのならインストーラ起動時の条件確認を SupportedRuntimes に頼るのではなく
MsiNetAssemblySupport プロパティの有無で、条件チェックすることをお勧めします。


...と書いておきながら、.NET Framework の起動条件をはずすのって出来ないんですね...

うーん、やっぱり限定しかないのか?>VSセットアッププロジェクト

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
1

スキルアップ/キャリアアップ(JOB@IT)