- PR -

【VC#2003】Windowインストーラの動作について

1
投稿者投稿内容
Makoto
大ベテラン
会議室デビュー日: 2004/03/31
投稿数: 133
投稿日時: 2006-10-19 11:47
いつもお世話になっております。

Windowインストーラでインストールした後の
アプリの動作について教えてください。

下記をインストール対象としてインストールします。

 App.exe(アプリケーション)
 App.exe.config(アプリケーション定義ファイル)
 data.csv(アプリケーション設定データファイル)

インストール後に『App.exe』を起動すると正常に起動します。

しかし、設定データファイル『data.csv』をリネームしたり削除した後で
『App.exe』を起動すると再インストールしようとインストーラが起動します。

この設定を解除する方法はあるのでしょうか?

『data.csv』が削除された場合には、『App.exe』が新規で作成するものなので
特に自動での再インストールの方向にはもっていきたくありません。

以上、よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-19 12:24
引用:

Makotoさんの書き込み (2006-10-19 11:47) より:

Windowインストーラでインストールした後のアプリの動作について教えてください。


"Window インストーラ" ???
VSI か Install Shield のどちらかでしょうか...

引用:

しかし、設定データファイル『data.csv』をリネームしたり削除した後で『App.exe』を起動すると再インストールしようとインストーラが起動します。


おそらく、MSI の自己修復機能でしょう。

引用:

この設定を解除する方法はあるのでしょうか?


基本的には無理でしょう。(自己修復機能が頑強すぎます...)

# とはいっても、私はデプロイの専門家ではありませんので、
# 専門家 (とっちゃんとか、とっちゃんとか、とっちゃん) に判断してもらいましょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-10-19 12:28
引用:

Makotoさんの書き込み (2006-10-19 11:47) より:

『data.csv』が削除された場合には、『App.exe』が新規で作成するものなので
特に自動での再インストールの方向にはもっていきたくありません。


ということなら、最初からインストールパッケージに data.csv を含めなければいいのではないでしょうか?(そういうことではない?)
パッケージには含めずに、インストール時に作るとか
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-10-19 12:58
とっちゃんです。

えーっと、リネームあるいは削除するとインストーラが動いてしまうのは
自動修復機能と呼ばれるものです。
詳しくは http://www.microsoft.com/japan/msdn/net/general/wi_integration.asp を見てください。

どういうものか、何で用意されるようになったかなどなどは、上記のリンク先からいろいろ調べてみてください(^^;

具体的な回避策にいきましょう。

特定のアプリあるいは、特定のファイルだけ自動修復が動かないようにするという方法はありません。
したがって、回避策はそのファイルをインストーラが認識しないようにする(すなわちインストールしない)ということになります(すでに、かるあさんから指摘されていますよね)。

おそらく、インストーラに入れた理由は(何にも考えてなかった場合を除き)、アンインストール時には消してほしいということだと思うので、その方法も提示しておきます。

あらかじめファイル名がわかっているファイルをアンインストール時に消すには
RemoveFile Table というmsiのテーブルにエントリーを追加することで実現できます。

VSセットアップの場合は、ORCA を利用するなどで設定する形になりますが、それ以外のインストーラ作成ツールであれば、たいていは設定できると思います。

RemoveFile Table については、http://windowssdk.msdn.microsoft.com/en-us/library/aa371201(VS.80).aspx を参照してください。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
Makoto
大ベテラン
会議室デビュー日: 2004/03/31
投稿数: 133
投稿日時: 2006-10-19 13:47

早速の回答ありがとうございます。

>VSI か Install Shield のどちらかでしょうか...

すみません、ご指摘のとおりVSI(=Visual Studio Installer)です。

>基本的には無理でしょう。(自己修復機能が頑強すぎます...)

了解しました。
『自己修復機能が頑強すぎます』の意見には賛成です。

>ということなら、最初からインストールパッケージに
>data.csv を含めなければいいのではないでしょうか?

まったくそのとおりなんですが、
下記の理由がありまして、そうもいかないんです。

理由:ユーザが『data.csv』の中身を確認するとのことで、
   『data.csv』へのショートカットをプログラムメニュー内に
   作成する必要があるのです。
   結果的に、ショートカットをインストールする必要があるのですが、
   本体ファイル『data.csv』がないとショートカットのインストールが
   NGなのです...

結局、私がやりたいことは下記です。

『インストール対象のショートカットをインストールして、
 本体のファイルの自己修復機能は無効化したい。』


でも特定のファイルの自己修復機能の無効化はできないということで、
頂いた情報をまとめると『難しそう』ということですね。

教えていただいたURLをもう少し調べて、見つからなければあきらめます。
(運用でフォローしてもらう方向にします。)

とはいえ今回は、VSIの良い勉強になりました。
ありがとうございました。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2006-10-19 15:22
とっちゃんです。
引用:

理由:ユーザが『data.csv』の中身を確認するとのことで、
   『data.csv』へのショートカットをプログラムメニュー内に
   作成する必要があるのです。
   結果的に、ショートカットをインストールする必要があるのですが、
   本体ファイル『data.csv』がないとショートカットのインストールが
   NGなのです...

結局、私がやりたいことは下記です。

『インストール対象のショートカットをインストールして、
 本体のファイルの自己修復機能は無効化したい。』


最初に書いてもらえれば、もっと別のアプローチも考えられるのですが...

具体的なアプローチに入る前に、いくつか浮かび上がってくる問題点をピックアップしておきます。
掲示板でのやり取りですから、単に情報を提示していないだけで既に考慮済みだと思いますが、一応念のため。

まずは、ショートカットについて
「ショートカットのリンク先がなくなっている場合(リネーム、削除など)、リンク先が見つからないため、検索に行ってしまいます。」
この問題に対する解決策は用意できているでしょうか?(別にここに公開する必要はありません)

最初の質問で
引用:

しかし、設定データファイル『data.csv』をリネームしたり削除した後で
『App.exe』を起動すると再インストールしようとインストーラが起動します。


と書いていますよね?

この消された(あるいはリネームされた)状態で、ショートカットをクリックされてしまうと、上記の問題が発生します。

この問題に対して、明確な回答(運用フォローでも何でも良い)が用意できていないのであれば、ショートカットを作成するということ自体をやめる方向で検討することをお勧めします。

次は運用形態。
今のところ明らかになっていませんが、運用アカウントが、制限ユーザーもありえる場合、インストール先(data.csvの存在するフォルダ)によっては、読む以外の操作が出来ない場合があります。

また、1マシンで複数のユーザーアカウントがある場合、同じcsvを操作しても問題はないのでしょうか?特に、Vistaや、XP-Home のユーザー切り替え機能(FUS)が有効な場合、動かしたまま別アカウントで操作できてしまうという問題があります(殆どのアプリが考慮していないようですが、動作上非常に問題となりやすい部分です)。
同時使用はNGとするだけであっても、FUSの場合やターミナルサービスとなると、プログラム的なブロックはかなり面倒なことになります。

まだまだ続きます。管理者権限があるユーザーでの運用ですが(是非は不問)、この場合でも、XP/2003 では問題ありませんが、Vista になると、UAC(User Account Control)という仕組みにより、通常運用は管理者権限であっても制限ユーザーと同じとなります。

これらについても、きちんとした対応(殆どがプログラム的な対応となる)を行なっておく必要があります。

これら全てが何らかの解決策を既に持っているとした場合、もう少し具体的にどこに何を配置するかを書いてください。

そうすれば、どういうアプローチがあるかを書くことも不可能ではありません。
でも、インストーラでというよりは、アプリケーションでフォローすることをお勧めしますけどねw(上記を全部クリアしようとすると、インストーラでは不可能なのでw)
_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
Makoto
大ベテラン
会議室デビュー日: 2004/03/31
投稿数: 133
投稿日時: 2006-10-19 16:55
アドバイスありがとうございます。

>単に情報を提示していないだけで既に考慮済みだと思いますが、一応念のため。

一応、運用フォローで考えていました。
が、漏れがあることに今気付きました。(正直回避不能かなと思います。)

そこで自己修復機能をOFFにできない旨を説明したところ、ご指摘の
『ショートカットを作成するということ自体をやめる方向』で了承されました。
(サブ的な機能でしたので)

また運用形態ですが、ユーザアカウントについては、管理者アカウントだけで
24時間運用するシステムですので特に問題はなさそうです。
(操作する人は変わると思いますが、アカウントは同じです。)
またVistaのUACの件ですが、XPProで1ユーザアカウントだけでの運用になりますので、
今回は考慮しないで問題なさそうです。
でも、これからシンクライアントやらメタフレームやらが流行ると
ユーザのアクセス権限の考え方って大変になりそうですね...

参考までに、結果的には下記のようにしました。

・自己修復機能をOFFにできないので、『data.csv』をインストール対象から外す
・『data.csv』へのショートカットは作成しない
・『data.csv』をユーザが確認する方法は、マニュアルに記載することで対応する

→結局何もしないことになりました...
 アドバイスをいろいろ頂いたのに、活用できずすみません。

>アプリケーションでフォローすることをお勧めしますけどね

そのとおりですね。
アプリフォローですと、下記『ダミーショートカット案』などが思いつきますね。

●ダミーショートカット案
 『data.csvへのショートカット』のリンク先を、
 実はdata.csvの存在を確認して表示するアプリにして、
 data.csvを起動させる方法

以上、お忙しい中アドバイスありがとうございました。
1

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