- PR -

.NETのインストーラー作成について: コピー元のディレクトリが知りたい

1
投稿者投稿内容
.NET一年生
会議室デビュー日: 2006/01/31
投稿数: 2
投稿日時: 2006-01-31 21:33
 インストーラーのファイルシステムを使わずに、カスタム動作でインストーラークラスを呼び、そのクラス内でインストーラーの実行ファイルが置いてあるディレクトリの下位ディレクトリに存在するファイルを、インストール先にコピーしたいと考えています。

 そこで質問なのですが、インストーラーを実行したときに、クラス内でインストーラーが実行されたディレクトリ(実行ファイルが置いてある場所)を知る方法を教えていただきたいです。

 System.IO.Directory.GetCurrentDirectoryを使えば取得できると思ったのですが、失敗しました。

[環境]
Windows XP SP2
VisualStudio.net 2003
VB.NET
Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-02-01 10:44
質問の回答でなくて申し訳ありませんが、
引用:

.NET一年生さんの書き込み (2006-01-31 21:33) より:
 インストーラーのファイルシステムを使わずに、カスタム動作でインストーラークラスを呼び、そのクラス内でインストーラーの実行ファイルが置いてあるディレクトリの下位ディレクトリに存在するファイルを、インストール先にコピーしたいと考えています。


何故そう考えますか?
インストーラは必要なすべてのデータと命令を 1 つのパッケージに収めるものです。


_________________
音速の定時退社!
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-02-01 11:38
とっちゃんです。

Yamさんと、同じになってしまいますが、インストーラでファイルをインストールするのではまずいのでしょうか?
もしかして、実行時に書き換えを行うからとかを考えているのでしょうか?
もし、そうだとしたら、Vista では、非常にまずいことになります。
書き換えるデータは、MyDocument や、Application Data の配下にコピーするなり、
新規生成するなりして使いましょう。

インストーラの段階で(インストーラクラスを含め)準備されるファイルは、
アプリケーションの実行時には、参照のみで使うようにアプリケーションを
作るようにしないと、万人受けするアプリには出来ませんよ。

で、直接的ではありませんが、回答のヒントです。

インストール元のフォルダの識別は、SourceDir というプロパティを使います。

インストーラクラスにプロパティ情報を渡す方法はご存知ですか?
もし、わからないという場合は、一度インストーラのチュートリアルをやってください。
プロパティの渡し方も書かれています。

注意点は、ディレクトリなどの空白文字が含まれる(可能性のある)場合は
""でプロパティをくくってあげる必要があることです。

具体的には、"[SourceDir]" のようにします。
全てのプロパティを""でくくって渡しても問題はありません。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
.NET一年生
会議室デビュー日: 2006/01/31
投稿数: 2
投稿日時: 2006-02-03 20:05
問題解決しました。
みなさんありがとうございました。

> 具体的には、"[SourceDir]" のようにします。
> 全てのプロパティを""でくくって渡しても問題はありません。
/hogehoge="[SourceDir]\"
でいけました。
1

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