- PR -

ClicOnce実行時、.application が IE で開かれてしまう

投稿者投稿内容
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2006-08-18 20:01
masa さん、丁寧なアドバイス本当にありがとうございます。

毎度亀レスで、申し訳なく思っておるところですが、
今また別件がはいっておりまして、CliceOnce に関して関われなくなっております。

後日、アドバイスを精読させていただいき検証します。
お待たせしてはと思い、一報いたしました。

まだまだわからないことがあるかと思います。
よろしくお願いいたします。
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2006-09-03 20:48
こんばんは。
先日はお世話になりました。ありがとうございます。
手すきになりましたので、ClickOnce にまた向かっておりますが、
あれこれあった課題を失念しているような状態でして(汗
技術うんぬんよりも、ハンドルネーム通り自分との戦いのほうがやっかいです。


さて[実行/名前を付けて保存]ダイアログが表示される件についてですが、原因がわかりました。
私の開発したアプリケーションの必須コンポーネントは
 ・MDAC
 ・.NET Framework
でありまして、必須コンポーネントから MDAC をはずしたところ、
配置用 Web ページに JavaScript が追加され、Framework 環境下では必須コンポーネントに
関するガイダンスが表示されないことが確認できました。
(JavaScript のソース、載せようかと思いましたが発行してみればすぐわかるので割愛します)
要は、Framework 以外に必須コンポーネントがある場合は無条件に Setup.exe を起動する、
ってことですね。
masaさんには親身に相談に乗っていただいたのに、このような理由とは><
心苦しい限りです。


それから、本題の MIME についてですが、ASP.NET アプリを検証する案件もありまして、
サーバーに .NET Framework 2.0 をインストールしてしまいまして・・・
Framework アンインストールしても“元に戻った”とはいえないですよね・・・
検証断念でしょうかね。
ただし、MIME をどこに設定すればよいかがハッキリしましたので、本番には対応できるかと。
IIS のマネージャ開いて、<root> に以下のものを設定すればよいですね。
 .application application/x-ms-application


最後に(あつかましくて申し訳ないですが)新しい質問をさせてください。
ClickOnce で複数の機能からなるシステムを配布する場合についてです。
たとえば、マスタメンテ、マスタリスト、データ入力・リスト・統計・バックアップ
といった機能を、1つのメニューから起動するようなシステムを作る場合です。
それぞれの機能を DLL で作って、メニューのプロジェクトに組み込むような形になるのでしょうか。
つまり、こちらのような
 @IT ClickOnceの真実 ClickOnceテクノロジを最大限に生かす開発
 http://www.atmarkit.co.jp/fdotnet/clickonce/clickonce04/clickonce04_01.html
感じになるでしょうか?
実際開発されてる方の、ノウハウをコッソリ教えていただけないでしょうか。

よろしくお願いいたします。

[ メッセージ編集済み 編集者: とある根性なし 編集日時 2006-09-03 20:51 ]
masa
常連さん
会議室デビュー日: 2003/04/16
投稿数: 38
投稿日時: 2006-09-04 16:43
引用:
1つのメニューから起動するようなシステムを作る場合です。
それぞれの機能を DLL で作って、メニューのプロジェクトに組み込むような形になるのでしょうか。



インストールや更新で、ダウンロードの時間が少なくなるので、機能ごとにDLLを作るべきだと思います。

記事のようなオンデマンド配置については、最初のインストールをすべてオンラインから行うのであれば、あるいは最初のインストールを短くする必要があるならば、採用した方がよいと思います。

しかし、オンデマンド配置は、特に最初のインストールの負荷を減らすために使うものと考えた方がよいでしょう。というのも、ClickOnceでの更新は、自動的に差分ダウンロードになるため(つまり変更した分しかダウンロードしないため)、わざわざダウンロード グループに分けてオンデマンド配置する必要がないからです。
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2006-09-04 22:15
masaさん、返信ありがとうございます! 本当にありがたいです。
やっと再返信できました

質問が冗長になってしまいますが、先の DLL で作ってうんぬんのシステムですが、
ClickOnce でシステムを配布する場合は、こういった事をするのは一般的なのでしょうか。
一般的でないならどのような方法があるでしょうか。
基本的に ClickOnce は1本づつのインストールで、システムがアプリケーション1本なんてありえ
ないので、当然必要になってくるというのは想像に難くないのですが、なにぶん DLL 作った
ことがないほど経験が浅いもので、ビビっております


ClickOnce に関してさらに質問よろしいでしょうか。
署名と証明書および.pfxファイルの管理・運用に関してです。
 参考:ClickOnce 信頼された発行者の設定
    http://www.microsoft.com/japan/msdn/net/winforms/clickoncetrustpub.aspx

1.証明書は必ず証明機関より取得する必要がありますか?

2.プロジェクトファイルの[署名]ペインの[テスト証明書の発行]で発行される証明書は、
  自社が発行する証明書として扱ってよいのでしょうか? デバッグ用ということでしょうか?

3.複数の開発者で1つの ClickOnce アプリケーションを管理する場合、証明書はどのように管理されてますか?

4.一番最初にできる <AppName>_TemporaryKey.pfx を削除してしまいました。
  本来なら、このファイルをリネーム・パスワード設定して社内レベルで管理しなければならないですよね。
  # この他にもいくつか .pfx ファイルを作成してまして、証明書ストアの中もウダウダになってます。
  対応として、最も古い証明書からファイルをエクスポートして .pfx を作成したのですが、
  これで運用していくことについてどう思われますか?

5.証明書の有効期限日が過ぎた場合、どのような対応が必要なのでしょうか。


何度もいくつも申し訳ありませんが、ぜひ、よろしくおねがいします。
masa
常連さん
会議室デビュー日: 2003/04/16
投稿数: 38
投稿日時: 2006-09-05 19:24
ClickOnceではある程度まとまった機能を持つアプリケーションを配布する事例がまだあまりないと思います(要件を挙げていくと、結局ClickOnceではもの足りず、Updater Application Blockを使った方がよいという結論になることが多いと思うので)。
ClickOnceでそのようなアプリケーションを配布するにはDLLファイルに分けるのは欠かせないと思います。(どういった粒度で切り分けるのかは難しいかもしれませんが)DLLを作成して利用すること自体は難しくないのでがんばってください。


署名の質問に関しては↓このページの内容が役立つと思います。
ClickOnce の配置と Authenticode
http://msdn2.microsoft.com/ja-jp/library/ms172240.aspx

1:
 →必ずしもその必要はないです。

2:
 →OKだと思いますが、発行元が自分のユーザー名などになるので、会社として外に出すのはかっこわるくないでしょうか?
 →テスト証明書(=自己証明書)であっても最終的にはMakecert.exeなどを使って手動で作成した方がよいとわたしは思います。

3:
 →私の場合は、日常的な開発ではVisual Studioが生成したテスト証明書を使います。製品となる最終的なビルドだけ、第三者機関が生成した証明書に切り替えます。切り替えはプロジェクトファイル(=MSBuildのファイル)を直接、書き換えています(MSBuildファイルはXMLファイルなので、プログラムによって自動的に書き換えるようにしています)。
 →証明書は責任者(とビルド担当者)が管理するのがよいと思いますが、.pfxファイルはパスワードによる保護があるので、もし第三者の手に渡っても少しは安全なのではないかと思います。

4:
 →上記のMakecert.exeで証明書を作成して、それを大切に管理して使った方がよいと思います。できるなら第三者機関から証明書を得た方が好ましいですが……。

5:
 →有効期限が切れた証明書ではClickOnceの発行ができないです(エラーになります)。
 →ただし証明書が有効なうちに署名したClickOnceアプリケーションならば、その有効期限が切れた後も信頼された状態でアプリケーションが実行できます。
 →アプリケーションをバージョンアップする場合は、有効期限内の証明書を使わなければ発行できません。
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2006-09-05 20:41
masa さん、何度もありがとうございます
心から尊敬しています

経過報告をアップしようと文書作成してたのですが、先にレスいただいちゃいました。

-----------------------------------------------------------------------------

あるシステムの機能を DLL で作ってメニューから起動、といったシステムに関してですが、こういうのを見つけました。
 ClickOnceを用いたクライアントでの複数のEXEの実行
 http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?postid=613967&siteid=7
やりかたはいろいろですね。

引用:
(どういった粒度で切り分けるのかは難しいかもしれませんが)
DLLを作成して利用すること自体は難しくないのでがんばってください。



ありがとうございます。
粒度は、exe 単位というか画面単位になるかと思いますので、DLL の動きさえわかってしまえば、ということかなと思います。
Updater Application Block に関しては後日調べますね。

-----------------------------------------------------------------------------

署名と証明書および.pfxファイルの管理・運用に関しての質問の調査結果と今後です。

1.について
 社内においてですね、
  信頼する証明機関の発行した証明書というのは、アプリケーションを Web に展開する際に必要なものである。
  今回は社内 LAN で使用するアプリケーションであり、かつインターネットにつなげない端末もある。
 ということで、そもそも必要ないので取得しない、ということでした。
 私が前提をまったく理解していなかったと orz

2.について
 質問3・4・5に通ずる内容ですね。
 プロジェクトや開発者共通で使用する .pfx を作成する、あるいは証明書の有効期限日を延長するには?
 という内容で調べていくと
  証明書作成ツール (Makecert.exe)
  http://msdn2.microsoft.com/ja-JP/library/bfsktky3.aspx
 にたどり着きますね。
 これから調べる予定です。

3.について
 なるほど。調べてやってみますね。


4.について
 上記で解決できる内容でしたので、省略しますね。

5.について
 こんなエラーでますね
引用:

エラー 2 SignTool はエラー 'bin\Release\<AppName>.publish\\setup.exe の署名に失敗しました。
SignTool Error: ISignedCode::Sign returned error: 0x80880253 The signer's certificate is not valid for signing.SignTool

Error: An error occurred while attempting to sign: bin\Release\<AppName>.publish\\setup.exe' を報告しました。


 これも Makecert.exe で証明書の有効期限を広く取ってやれば回避できる問題のようですね。



失礼な言い方ですが、痒いところに手が届く、というのはこういう気持ちですね。
本当にありがとうございます。
がんばります。

[ メッセージ編集済み 編集者: とある根性なし 編集日時 2006-09-05 20:44 ]
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2006-09-05 21:51
むぅ・・・Makecert.exe、MSDN 読むだけではチンプンカンプンですね・・・
引用:

http://geocities.yahoo.co.jp/gl/hou_ming_2/view/20060418/1145311511
1. 証明書、秘密鍵等の作成
・makecert.exe -a sha1 -cy authority -eku 1.3.6.1.5.5.7.3.3 -r -sv HoumingCA.pvk -n "CN=Houming" HoumingCA.cer
・cert2spc.exe HoumingCA.cer HoumingCA.spc
・pvk2pfx.exe -pvk HoumingCA.pvk -spc HoumingCA.spc -pfx HoumingCA.pfx -f


きっとコレですよね。
パラメータは置いといて、
 1:.pvk と .cer を作る
 2:.cer から .spc を作る
 3:.pvk と .spc から .pfx を作る
んで、それぞれのファイルのには、格納先をフルパスで渡すんですよね?
.pfx のパスワードはどこで設定したらいいんでしょう?
あとは MSBuild かな。
んー、終わんなかった・・・orz


ひとつ、質問を忘れていたのですが、
テスト証明書の作成によってできた個人用証明書ストアの証明書は、
削除してもかまいませんか?

よろしくお願いします。

[ メッセージ編集済み 編集者: とある根性なし 編集日時 2006-09-05 23:28 ]
とある根性なし
ベテラン
会議室デビュー日: 2006/08/15
投稿数: 54
投稿日時: 2006-09-06 17:41
証明書の発行うまくいきました^^
ClickOnce への署名もうまくいっているようです。
MSBuild をいじるのは、確認はしましたが、もうちょっと理解が必要そうです。

ちょと出なければならなくなったので、取り急ぎご報告です。
これからもよろしくお願いします。

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