掲示板
  .NET管理運用  > デプロイメント  > 特殊フォルダへのファイル配置方法  
 
 
 投稿者 スレッド: 特殊フォルダへのファイル配置方法
厳島 はオフラインです。最後に活動した時刻: 2006/02/15 10:30:50 厳島
Top 50 Poster
参加日: 2005-2-18
投稿数: 189
 
特殊フォルダへのファイル配置方法
投稿日時: 2005-6-23 午後 3:28
お世話になります。 厳島です。

今日、一点問題点が上がりまして、みなさんのお知恵をいただければ幸いです。
VS2003のセットアッププロジェクトを作成しましたが、一部のファイルを
windowsのシステムフォルダに格納する必要がでました。
それを実現は可能だと思うのですが、ピンときていません。

1.ファイルシステムにカスタムフォルダを作成でdefaultLocation=[SystemFolder]
 にはしたのですが、Propertyの説明の意味が理解できません。

 ※ユーザーがインストール時にフォルダ名を変更できるようにカスタム フォルダのパスを
  オーバーライドするために、インストール時にアクセスできる名前付きプロパティを指定
  します。このプロパティを空白にした場合は、インストール時にフォルダ名を変更できま
  せん。(MSDNより)

  SystemFolderの場合、空白でいいのかな?



2.Conditionの設定も可能と思いますが、以下の条件を追加可能なのでしょうか?
  配置ファイルA.TXT
  ①ファイルが存在しなければ、無条件に追加
  ②配置ファイルより新しい日付のものがあれば更新しない。
  ③配置ファイルが古ければ上書きで更新

そのあたり参考HPも探しているのですが、よろしければご教授宜しくお願い致します。
とっちゃん はオフラインです。最後に活動した時刻: 2006/03/31 18:40:35 とっちゃん
Top 25 Poster
参加日: 2004-3-31
投稿数: 431
 
Re: 特殊フォルダへのファイル配置方法
投稿日時: 2005-6-23 午後 3:48
とっちゃんです。

> 1.ファイルシステムにカスタムフォルダを作成でdefaultLocation=[SystemFolder]

システムフォルダは特殊なフォルダなので、
対象コンピュータ上のファイルシステムから右メニューにてシステムフォルダを選択します。


ちなみに、システムファイルへのインストールは「原則」禁止です(例外あり)。
これについての詳細は Windows のロゴ案件(2000以上のものならどれでもよい)に詳しく
書かれています。

基本的な例外事項は
1.モジュール提供元がシステムディレクトリへのインストールを指定している(現行製品ではほとんど無いはず)。
2.モジュール提供元がシステムディレクトリへのインストールを許可していて、なおかつロゴの条件に違反しない範囲の内容である。
3.過去の製品で同じモジュール(もしくはその当時のモジュールとバイナリ互換を維持した上位バージョン)をインストールする場合
4.OSの仕様により、システムディレクトリ(かそのサブフォルダ)にインストールしなければならない。
などとなります。


>2.Conditionの設定も可能と思いますが、以下の条件を追加可能なのでしょうか?
通常の手段ではできません。
バージョン情報を持たないファイルのインストール条件は、
1.インストール先にファイルが無い場合
2.インストールされたファイルの最終更新日と作成日が同じで、なおかつインストールしようとしているファイルとは違う場合
の2つの条件しかなく、ファイルの最終更新日の新旧などは比較対象にはなりません。

さて、これを回避する方法ですが、通常の手段ではなく、特殊なことをすれば回避そのものは
可能です(ただし、VSデプロイだけでは実現不可能)。

非常におおさっぱに段取りを書くと...

・インストール開始前に、対象となりうるファイルを退避する処理を組み込む。
・インストールする(インストーラのファイルインストール部分のアクション)
・インストールされたものと退避したもののうちどちらを採用するかをチェックして採用するほうで上書きする
となります。

これを WindowsInstaller カスタムアクションDLLとして用意して、必要な処理を全部用意した上で
適切なタイミングの場所に組み込めば実現することは可能です。
厳島 はオフラインです。最後に活動した時刻: 2006/02/15 10:30:50 厳島
Top 50 Poster
参加日: 2005-2-18
投稿数: 189
 
Re: 特殊フォルダへのファイル配置方法
投稿日時: 2005-6-23 午後 4:11
とっちゃんさま ありがとうございます。

システムフォルダを選択でよかったのですねっ。カスタムフォルダから作ってプロパティ変えるなど
勘違いしていました。
システムフォルダには、製品の関係でmswinsck.ocxなど(その他、製品の関連ファイル)を入れる
必要ありとの通達(他部門から)でした。

一応、配布のファイルはバージョン番号を持っています。その場合、conditionが使用可能でしょうか?
よろしければ、ご教授頂けると幸いなのですが。

今回の要求は実現できそうにない場合、別途専用の実行ファイルを提供する方向になると
思っています。できれば デプロイで可能な事祈りつつ・・・。
とっちゃん はオフラインです。最後に活動した時刻: 2006/03/31 18:40:35 とっちゃん
Top 25 Poster
参加日: 2004-3-31
投稿数: 431
 
Re: 特殊フォルダへのファイル配置方法
投稿日時: 2005-6-23 午後 4:32
とっちゃんです。

> システムフォルダには、製品の関係でmswinsck.ocxなど(その他、製品の関連ファイル)を入れる
> 必要ありとの通達(他部門から)でした。

再配布条件満たしています?
mswinsck.ocx ってVS6の物だと思うのですが...
.NET 側にもちゃんとクラスがあるので移植する必要がある気が...



ま、それはさておき(ここで言及しても意味無いので、ちゃんと社内で確認とってくださいね)、

DLL(OCXを含む)や、EXE など、バージョン情報を持つファイルであれば、インストール先にかかわり無く
バージョンチェックが働きます。
バージョンを持つファイルのインストール条件は
・ファイルが無い場合
・インストール先のファイルよりもインストールしようとするファイルのバージョンがより大きい場合
のいずれかになります。



condition について

condition は特定のコンポーネント(VSデプロイの場合1ファイルに付き1コンポーネントになります)に対して
インストールする条件を定義するためのものです(重要:ファイルやレジストリそのものではない)

たとえば、あるモジュールは9x系専用のものであれば、condition に 「Version9X」
と入れておくことで、9x系OSにのみインストールされるようになります。

あくまでもコンポーネントのインストール条件ですので(インストールするかしないかの判定のみ)
ファイルの上書き条件とは全く関係ありません。
 
Page 1 of 1
 
GotDotNet Japan 掲示板  > .NET管理運用  > デプロイメント  > 特殊フォルダへのファイル配置方法