|
■No72419 (nobb さん) に返信
>>これらは、InstallShield を使っている場合原則何一つ考慮しなくていい部分です。 > たしかに、作成されたMSI(アップデート用ではないもの)をOrcaで覗いてみたらFilesInUseに関するものが色々ありました。 > (それがどう作用しているかまでは把握していません) > 言われたので、チェックしてみた! ある!。。。しらなかったー。。。 が一般的な感覚だと思います。
多分。。。w
> > 一応私が「一朝一夕では...」と判断した理由ですが、 > ・まず、FilesInUseというものがどういう方法で動き、どうやって表示され、どういう処理が可能か分からない(それは考えなくてもいいのかな・・・?) > ・ISでそれが動く為に必要な何か(設定?)があるのか
どういう方法で動いているか?や、どうやって表示リストをピックアップしているか?という部分は MsiProcessMessage という APIを使った、UIとCA(CustomActions)との連携部分に5割くらいのことが書かれています。 ISでそれが動くために必要な何かという部分もこの5割に含まれています。 ちなみに、残りの5割は、Windows でプログラムが動いている仕組みとか、起動中のプログラムで参照しているファイルのチェック方法とか そういうWindowsInstaller のAPIセットの範疇ではフォローできない部分の話なので、この部分に記載がないというだけです。
実際は、膨大な(世界最大級のAPIリファレンス)のあちらこちらに分散してますし、そもそもなんでプログラムが動いているか?は いまじゃ学校で習うことの一つ(どこぞの島国の話ではない部分ですけどね)なので、いわゆる前提知識に入っていたりしますが。。。
> ・(信じていない訳ではないですが)本当にUpgradeCodeや、ComponentId等々を気にせずとも作れるものなのか(を自分で確認していない) ComponentId や UpgradeCode(この識別子でできるであろうことに期待しすぎてる部分があると感じます)などの 各種識別子については、また別の部分に説明がある(これらもきちんと乗っていますが、あっちに一つこっちに一つなのでいろいろ大変ではある) のでそれらを見てください。というところかな。 ComponentId とはなにか?どういう情報を管理しているのか? UpgradeCode は?その他識別子(いろいろあるので全部割愛w)は? という部分、WIndowsInsatllerSDKにきちんと書かれています(このAPIセットの中では非常に重要な識別子なので)。
とはいえ、まずは実際に使えるのか(自分が要求されている目的を達成できる動きになるのか?)を確認するためにも 新規プロジェクトを1つ作成して、その中に更新するファイルを入れてビルド&インストールしてみるのがいいと思います。
このとき、ComponentId やUpgradeCodeといった、各種識別子は一切すり合わせる必要はありません。 本当に新規に作成し、インストール先を設定し(ここだけ、更新したいファイルのインストール先になるようにしておくことをお勧め) 機能やコンポーネントを追加して、ビルド&実行してみるだけです。
テストなので、完全なものである必要はないので、1つだけ更新する形でいいと思います。
> ・アップグレードを作った経験がほぼなく、その辺りの知識が乏しすぎる > (・乏しいが故の不安) 知らないが故の不安を払拭する方法は、ただ一つ、知る(学ぶ、経験する)だけです。 さすがにこればっかりは。。。ですねw
> ・さらっと、ちょびっと調べてみる(ぐぐってみる)と英語情報のみ見つかり、なおかつInstallScript or FilesInUseを抑止したい旨の物が多い > InstallScript の話題は今回についてはただの雑音です。出てきてしまうのはある意味仕方ない部分はあると思います。 それだけ情報量が多いということでもあるので。
あとは、英語しかないのは日本語で書いてる人がそもそもいないから。 「話題にならない=使われていない」 ではありません。 「話題にならない=なにか考えて対策する必要がない」 です。
んー。。。でも、FilesInUse で検索すれば、日本語もいくつか出るんですけどね。。。 目的に合うやつがあるかどうかは別として。。。
> そして、それらをオレオレで実装してしまう方法(起動してますよ!終了させてくださいね!で終了という処理の予定)と天秤にかけた結果です。 > いずれの理由にしても「調べろ!そして学べ!!」と言われたら何も言い返す事ができません。 > 自前実装か、WindowsInstaller に任せるか?については、最終的にアップデータでなにをやるか?によるので何とも。。。 ただし、自前実装ならキャンセル処理には必ずロールバックの実装が必要になるという点は外せないポイントになります。 リブートして更新という必要がある場合もありますが、いずれにしてもかなり厳しいことに変わりはありません。 それ以外に、このスレの最初の話題でもある、実行中のプロセスのリストアップという問題もあります。
> 表題の疑問に関しては不要な事だと思い書いていませんでしたが、EXEのアップデート以外にも必要な処理があり、 > それはIS(Windows Installerエンジン)では出来ない部分なので、1本のEXEで完了させたいという目的もありました。 > #おそらく、きちんとアップデーターを作れば、それをEXE側から起動させればいいだけだとは思いますが。。。
アップデート以外の部分については、表裏一体なところはあるような気もしますけど、問題の切り分け的には 別のものなので、ここでは考慮不要でもいいと思いますよ。 msiやmspでアップデータを用意するとなったら、その時改めて考えればいいと思います。
|