- PR -

インストール後のアプリショートカットリンク先

1
投稿者投稿内容
どら
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 63
投稿日時: 2007-08-28 10:46
v 2005 winxp winアプリ

いつも参考にさせていただいております。

一つ、質問があります。

vs2005のセットアッププロジェクトで、インストーラーを作成しております。
それを使用して、D直下に「アプリ」という名前でインストールしたとします。
D:\\\\アプリ\\\\bin\\\\(この中にファイルが入っています)
binの中→メイン.exe マスタ.dll 入力.dll
また、デスクトップに自動にショートカットが作成されます。

通常は、ショートカットをクリックするとアプリが実行されます。

上記の条件だった場合で、メイン.exeの名前を、メイン1.exeと変更したとします。
変更後にデスクトップのショートカットをクリックすると、インストールが自動的に始まってしまい、ファイルが上書きされるようになり、メイン.exe、メイン1.exe、マスタ.dll 入力.dllになってしまいます。

winxpショートカットのリンク探索機能かな?と思い、を無効にしたのですが、同様の現象が起こってしまいます。

指定のファイルがなかった場合に、インストールするのをやめさせるのは可能でしょうか?
また、何か設定があるのでしょうか?
(実際、手動でショートカットを作成したほうがよろしいでしょうか?)


ご教授お願いいたします。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-08-28 11:32
引用:

どらさんの書き込み (2007-08-28 10:46) より:

上記の条件だった場合で、メイン.exeの名前を、メイン1.exeと変更したとします。
変更後にデスクトップのショートカットをクリックすると、インストールが自動的に始まってしまい、ファイルが上書きされるようになり、メイン.exe、メイン1.exe、マスタ.dll 入力.dllになってしまいます。


名前を変更したことにより、メイン.exe がいなくなってしまったため、インストーラの「自動修復」が行われるのが直接的な要因です。

上書きされるとありますが、実際はそうではなく、単にいなくなったファイルが復活してるように見えるだけではありませんか?


インストーラが作成したショートカットファイルには、インストーラの自動修復機能を働かせるトリガーが含まれています。
そのため、exe に限らず、dll などでも名前を変えるなど、元のファイルがなくなった状態(インストール先フォルダに、インストール時の名前でファイルがないとそれはいないと判断される)になっている状況で、ショートカットを実行となれば、自動修復が行われます。

もし、何らかの理由で「メイン.exe」->「メイン1.exe」という変更が必然なのであれば、インストーラを含めた状態遷移全体を再設計する必要があると思われます。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
どら
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 63
投稿日時: 2007-08-28 13:20
とっちゃんさん、ご返答ありがとうございます。

引用:

上書きされるとありますが、実際はそうではなく、単にいなくなったファイルが復活してるように見えるだけではありませんか?



おっしゃるとおりでした。
確認してみると、上書きではなく、存在しないファイルが復活しているようでした。
メインのexeだけではなく、他のファイルもない場合も、再インストールが始まってしまうんですね・・・。勉強になりました。

自動修復で過去レスを確認してみたところ、自動修復機能を止めさせることはできないみたいとのことでしたので、インストールを含めたところ、もう一度検討してみます。

ちなみに、ファイルを削除したのではなく、インストール後に、プログラム更新のため、メイン.exe、マスタ.dll、入力.dllファイルを上書きした場合とかで、なりますでしょうか?
(お客様の環境で、数十台あるPCの中で、1台だけ現象がおこったもので・・・。
もしかしたら、作業中にファイルを消してしまった可能性もありますが・・・)

何か、起こりそうな可能性があるようでしたら、教えていただければと思います。
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-08-28 14:12
引用:

どらさんの書き込み (2007-08-28 13:20) より:

自動修復で過去レスを確認してみたところ、自動修復機能を止めさせることはできないみたいとのことでしたので、インストールを含めたところ、もう一度検討してみます。

ちなみに、ファイルを削除したのではなく、インストール後に、プログラム更新のため、メイン.exe、マスタ.dll、入力.dllファイルを上書きした場合とかで、なりますでしょうか?
(お客様の環境で、数十台あるPCの中で、1台だけ現象がおこったもので・・・。
もしかしたら、作業中にファイルを消してしまった可能性もありますが・・・)

何か、起こりそうな可能性があるようでしたら、教えていただければと思います。


自動修復を止めることも不可能ではないのですが、やるとそのマシンの自動修復はすべて止まってしまうので、現実的な回避策とは言えません。

さて、更新した場合ですが、基本的にバージョンが上がっているアップデートであれば、自動修復が行われることはありません。
バージョンダウンした場合にどうなるかはやったことがないのでわかりませんが、バージョンが同じ場合も修復は走りません。

このあたりは、WindowsInstallerのバージョン管理のルールを逆手にとってという泥臭いやり方でもあるのですが...

基本としてインストールしたものであれば、更新も含め、インストーラの範疇として手作業更新ではなく、バージョンアップ作業を行うことをお勧めします。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
どら
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 63
投稿日時: 2007-08-28 17:03
とっちゃんさん、ご返答ありがとうございます。

引用:

基本としてインストールしたものであれば、更新も含め、インストーラの範疇として手作業更新ではなく、バージョンアップ作業を行うことをお勧めします。



そうですよね・・・。手作業だと、何かと問題が発生してしまいますし。
手作業ではなく、バージョンアップ作業で行う方法、調べてみます。

ありがとうございました。
1

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