- - PR -
MSI 3.1でのネットワークドライブへのインストール
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-14 22:56
こんにちは。
開発環境:WindowsXP Professional + VS2005 Professional Edition インストール先:WindowsXP, Vista インストーラ:WindowsInstaller 3.1 インストール処理として、ファイル配備の他にCustomActionを作成し、 ファイル編集処理等を実施しています。 作成したインストーラは、ローカルディスクには問題なくインストールできるの ですが、ネットワークドライブへインストールを行うと、 「インストールを初期化中に例外が発生しました: System.IO.FileNotFoundException:ファイルまたはアセンブリ'file:///Y:\\XXX\\ CustomAction.dll'、またはその依存関係の1つが読み込めませんでした」 というエラーになります。 CustomActionを行わない(CustomAction.dllをインストールしない)場合は、 問題なくネットワークドライブにもインストールできます。 また、論理ドライブとしてローカルディスクを設定(Cドライブを共有し、Yドライブ に設定)しても同様のエラーとなります。 インストーラexeがCustomAction.dllをロードする際に何か参照が未解決になる ものがあるのかと思い、SDKのdependency walkerを使ってDLLを確認しましたが、 MSJAVA.DLLが見つからないと指摘はされますが、本来関係ないものだと思って います。 (念のためMSJAVA.DLLをsystem32配下に配備したが結果はNG) MSI 3.1を使用して開発する際にネットワークドライブ対応として何か設定する必要が あるのでしょうか??? 初歩的な質問かもしれませんが宜しくお願いいたします。 | ||||||||
|
投稿日時: 2007-11-15 00:41
MSI 云々はあまり関係ありません。 .NET ランタイムのセキュリティ制限に引っ掛かっているように見えます。 インストーラが関与しなくても、ネットワークドライブ上に配置されたアセンブリは「イントラネット上に配置されている」と見なされ、デフォルトの構成でアセンブリのロードに失敗します。 これを避けるためには ・ネットワークドライブへの配置をあきらめる ・リスクと手間を承知で各PCの .NET ランタイムのセキュリティ設定を変更する ・ClickOnce など配布方法を再検討する などの方策が考えられます。 | ||||||||
|
投稿日時: 2007-11-15 05:27
渋木様 早速の返答ありがとうございます。 なるほどそういうことですか。。。 あまり期間がないので、機能制限をかける方向で考えるしかなさそうですね。 各PCのセキュリティ設定をインストール時に変更してもらうのは現実的では なさそうですし。 しかし、世の中の多数の.NET2.0環境でネットワークインストールが可能な 製品、かつClickOnceでないものはどのように実現しているのでしょうか? (インストーラでセキュリティ設定を変更しているのでしょうか?) もし1つでも事例をご存知でしたら教えていただけるとありがたいです。 | ||||||||
|
投稿日時: 2007-11-15 07:03
設定はプログラムからいじることもできるので、大昔の私の質問を探せば、それらしいものが見つかります。
私はイントラだったのでやりましたが、販売用アプリケーションではやりません やってるアプリケーションがあったら、その会社の製品は買わないことにしたいと思います | ||||||||
|
投稿日時: 2007-11-15 12:37
そんな製品ありましたっけ? なにか事例をご存知ですか? | ||||||||
|
投稿日時: 2007-11-16 16:07
Jitta様、渋木様、返答ありがとうございます。
Jitta様
探して参照させてもらいました! ネットワークインストール自体をさせないことは機能として必須ではないはずなので 問題ないのですが、今回インストーラとして採用しているMSI3.1ベースのインストーラ だと、インストールフォルダ選択時にローカルディスクのみを選択肢として表示 させることができません。 そのため、ネットワークインストールがされた後に、CustomActionの実行で エラーになるという非常に見栄えが悪い状態になってしまっています。 (Orcaでmsiをどこかいじればできる???) 基本的にはネットワークインストールは制限とし、顧客要望があまりに強ければ プログラムはローカルに配置し、DB等リソースのみネットワーク側に入れる方向で 考えたいと思います。 渋木様
すいません、こちらの勘違いかも? 逆に、これまでネットワークインストールを許可していない製品に 出会ったことがなかったため、そう考えていました。 ネットワークインストールについて強く意識していた訳ではないので 見落としていたのかもしれません。 ちなみに教えていただいた情報を元に実機で検証したところ、 CustomAction.dllに署名を追加+アセンブリの信頼度を上げることで ネットワークドライブでも動作しました。 ただ、インストール媒体としてはCustomAction.dllはsetup.exeに包含されるので setup.exeに対して同様の対処を行えばインストーラでインストールしても 問題なく動作すると想定しています。 上記は検証のみで採用はしませんが。。。 見栄えよくネットワークドライブへのインストールをエラーにする(または 見せない)方式を調査したいと思います。 ありがとうございました。 |
1