none
ClickOnceの発行場所にSubversionを使用する事は可能でしょうか? RRS feed

  • 質問

  • 表題の件について、以下の様な手順で動作させました。

    ①C#のプロジェクトのプロパティ画面で

    「発行フォルダの場所」に「C:\ver3\」

    「インストールフォルダのURL」に「http://XX.XXX.XX.X/svn/CCOC_Reflesh_Release/ClickOnce/

    指定した後「今すぐ発行」ボタンを押下

    ②「C:\ver3\」に発行された、全てのファイル&フォルダを

    SVN上の①の「インストールフォルダのURL」にインポート

    ③起動URL「http://XX.XXX.XX.X/svn/CCOC_Reflesh_Release/ClickOnce/setup.exe」を

    クリックし実行する

    ④「このファイルを実行または保存しますか?」のダイアログが表示されるので「実行」ボタンを押下する

    ⑤「発行元を確認できませんでした。このソフトウェアを実行しますか?」ののダイアログが表示されるので「実行」ボタンを押下する

    ⑥「XXXXXをインストールしようとしてエラーが発生しました」のダイアログが表示される

    ⑦「install.log」を見ると、以下の様にエラー内容が出力されている(一部抜粋)

    '.NET Framework 2.0 (x86)' RunCheck result: No Install Needed
    Launching Application.
    URLDownloadToCacheFile failed with HRESULT '-2147024891'
    Error: 'http://XX.XXX.XX.X/svn/CCOC_Reflesh_Release/ClickOnce/DesmoClickOnce.application' をダウンロードしようとしてエラーが発生しました。

    何かオプションを付加すれば、

    ClickOnceの発行場所にSubversionを使用する事は可能でしょうか?

    ご存知の方がいらっしゃいましたら、ご教示して頂けると助かります。

    2011年10月3日 5:33

回答

  • Subversion クライアントに何を使用されているかによりますが、一番基本のコマンドラインからなら、

    app.application に application/x-ms-application を設定するには、

    svn ps svn:mime-type application/x-ms-application app.application

    としてから、commit かな。(配備された manifest, deploy 等の全ファイル設定してまわる必要があります)

    継続して使われる場合は、クライアント側に拡張子を判断して自動設定するような設定を行っておくと便利かと思います。(TortoiseSVN なんかを使用されていたら、デプロイ用のフォルダに tsvn:autoprops を設定するだけですし、これらの拡張子を他のシステムでは使わないと思えば config ファイルに書いても構わないでしょう)



    2011年10月6日 3:34
  • TracLightning のバージョンも、apache での Subversion のホスティング設定の状況もなにもわからないので、何とも言えませんが 401 が返ってきているので指定されている URL に対して匿名でアクセスできないのではないですか?

    たとえば、TracLightning 2.5.2 であれば、デフォルトで Subversion の公開 URL にはダイジェスト認証が設定されていて、ユーザ名とパスワードを入力しないとアクセスできないようになっています。このため、401 Not Authrized がエラーとして帰るのは当然の状態になります。

    <追記>

    TortoiseSVN を使用されている場合 config は触らなくても、デプロイ用のフォルダ (ClickOnce というところかな?) に対して tsvn:autoprops という属性を設定すれば、その配下にだけ autoprops を設定することができます。

    config ファイルは、その PC にだけしか設定が適用されず、メンバー全員に設定をしてまわってもらわないといけませんが、tsvn:* 属性の場合はリポジトリに設定するので、メンバー全員に効果があって、ちょっと便利です。(逆に TortoiseSVN を使用しなければならないという制約がつきますが)

    2011年10月7日 3:57

すべての返信

  • そもそもSubversionを使用しているのですか? 実はApacheだったりしませんか?
    2011年10月3日 5:51
  • すみません。Subversionの種類を記述するのを忘れていました。

    Subversionは「TracLightning」を使用していまして、内部ではApacheを使用していると思います。

    ※Apache/2.2.14 (Win32) DAV/2 SVN/1.6.9 ← サービスのプロパティの説明より

     

    2011年10月3日 6:01
  • > ③起動URL「http://XX.XXX.XX.X/svn/CCOC_Reflesh_Release/ClickOnce/setup.exe」をクリックし実行する

    http://XX.XXX.XX.X/svn/CCOC_Reflesh_Release/ClickOnce/<アプリ名>.application」をクリックし実行してみてはどうでしょうか。
    また、本当に全部発行されているか確認されたほうが良いかと思います。除外ファイルに引っかかっているとか。

    2011年10月4日 0:17
  • >「http://XX.XXX.XX.X/svn/CCOC_Reflesh_Release/ClickOnce/<アプリ名>.application」をクリックし実行してみてはどうでしょうか。

    上記URLをクリックしますと、IE上にソースが表示されてしまいます(ですのでsetup.exeを叩いてみました)。

    MIMEタイプの設定が足りないのでは?と思い

    D:\TracLight\CollabNetSVN\httpd\conf\httpd.confの<IfModule mime_module>タグ内に

    以下のMIMEタイプを追加した後、「TracLightning」のサービスを再起動したのですが、現象は変わりませんでした。

        AddType application/x-ms-application .application
        AddType application/x-ms-manifest .manifest
        AddType application/octet-stream .deploy

    設定方法が間違ってるのでしょうか?

    >また、本当に全部発行されているか確認されたほうが良いかと思います。除外ファイルに引っかかっているとか。

    同じサーバーにIISをインストールし、「インストールフォルダのURL」を※のURLに変更→「今すぐ発行」ボタンを押下し

    「C:\Inetpub\wwwroot\8113\ClickOnce」に配置し

    http://XX.XXX.XX.X:8113/ClickOnce/DesmoClickOnce.applicationをクリックした時は

    正常に動作しましたので、除外ファイルに引っかかったたりはしていないと思います。

    http://XX.XXX.XX.X:8113/ClickOnce/

    以上、お手数お掛けしますが、宜しくお願いします。

    2011年10月4日 2:10
  • おそらく、mime-type を svn:mime-type に設定する必要があるかと思います。

    2011年10月5日 7:23
  • svn:mime-typeの設定について、調べたのですが、稚拙の知識ではわかりませんでした。

    申し訳ございませんが、どのファイルの、どの部分にsvn:mime-typeの設定を

    行えばよいか具体的ご教示いただけると助かります。

     

    2011年10月6日 1:36
  • Subversion クライアントに何を使用されているかによりますが、一番基本のコマンドラインからなら、

    app.application に application/x-ms-application を設定するには、

    svn ps svn:mime-type application/x-ms-application app.application

    としてから、commit かな。(配備された manifest, deploy 等の全ファイル設定してまわる必要があります)

    継続して使われる場合は、クライアント側に拡張子を判断して自動設定するような設定を行っておくと便利かと思います。(TortoiseSVN なんかを使用されていたら、デプロイ用のフォルダに tsvn:autoprops を設定するだけですし、これらの拡張子を他のシステムでは使わないと思えば config ファイルに書いても構わないでしょう)



    2011年10月6日 3:34
  • 迅速な回答、ありがとうございます。

    ご教示して頂いた以下の方法で一歩前進しました!

    C:\Documents and Settings\<ユーザ名>\Application Data\Subversion\config

    上記ファイル設定を以下の様にする(TortoiseSVN使用時)※クライアント側の設定

    ①以下の#を削除しauto-propsを有効にする
     # enable-auto-props = yes

    ②以下の文を[auto-props]の一番最後に追加する

    *.application = svn:mime-type=application/x-ms-application
    *.manifest = svn:mime-type=application/x-ms-manifest
    *.deploy = svn:mime-type=application/octet-stream

    IE上にソースが表示されず「DesmoClickOnce.application」が実行できたのですが(ありがとうございます!)、
    以下のエラーメッセージが表示されました。

    「アプリケーションを取得できません。認証エラーです。」のダイアログが表示され
    「詳細」ボタンを押下しますと、以下の様なエラー内容が表示されました

    エラーの概要
     以下はエラーの概要です。これらのエラーの詳細はログに一覧表示されています。
     * http://10.235.30.6/svn/CCOC_Reflesh_Release/ClickOnce/DesmoClickOnce.application のライセンス認証により例外が発生しました。 次の失敗メッセージが検出されました:
      + http://10.235.30.6/svn/CCOC_Reflesh_Release/ClickOnce/DesmoClickOnce.application のダウンロードに失敗しました。
      + リモート サーバーがエラーを返しました: (401) 許可されていません

    「DesmoClickOnce.application」実行時の認証と、ClickOnce対象のファイルダウンロードの認証は異なるのでしょうか?

    質問続きで申し訳ございませんが、ご教示頂けると助かります。

    2011年10月6日 5:03
  • TracLightning のバージョンも、apache での Subversion のホスティング設定の状況もなにもわからないので、何とも言えませんが 401 が返ってきているので指定されている URL に対して匿名でアクセスできないのではないですか?

    たとえば、TracLightning 2.5.2 であれば、デフォルトで Subversion の公開 URL にはダイジェスト認証が設定されていて、ユーザ名とパスワードを入力しないとアクセスできないようになっています。このため、401 Not Authrized がエラーとして帰るのは当然の状態になります。

    <追記>

    TortoiseSVN を使用されている場合 config は触らなくても、デプロイ用のフォルダ (ClickOnce というところかな?) に対して tsvn:autoprops という属性を設定すれば、その配下にだけ autoprops を設定することができます。

    config ファイルは、その PC にだけしか設定が適用されず、メンバー全員に設定をしてまわってもらわないといけませんが、tsvn:* 属性の場合はリポジトリに設定するので、メンバー全員に効果があって、ちょっと便利です。(逆に TortoiseSVN を使用しなければならないという制約がつきますが)

    2011年10月7日 3:57
  • 遅くなりまして、申し訳ございません。

    ご教示して頂いた通り、ユーザー認証を外した所、エラーが発生せず無事にアプリケーションをダウンロードする事ができました(当たり前かもしれませんが)。
    色々とご教示ありがとうございました。非常に助かりました(勉強になりました)。

    2011年10月19日 0:49
  • こういうことがあるのでTracLightningはあまり快くおもっていません。

    TracLightningはあくまでtrac / subversionを使う手段で、Webサーバーは別に立てるべきです。

    もしくはApache / subversion / sqlite / python / tracを個別にコンパイル・インストールを行い、個々のモジュールについてきちんと設定方法を理解すべきです。それがなされていないから、Apacheを単独で使おうとしたときに設定方法がわからなくなるわけです。
    # そもそもどのモジュールで動作させたいのかすら理解されていませんでしたし。

    今回のことで認証を外したようですが、それが逆にsubversionに対して誰でもコミットできるように解放されてしまっていないか心配です。

    2011年10月19日 1:09
  • 具体的にどのように設定されたのかわかりませんが、

    • authz の設定にて、ClickOnce 用の階層のみ匿名アクセスを許可する
      たとえば、
      [CCOC_RefreshRelease:/ClickOnce]
      * = rw
      ? = r
      みたいなかんじです。(リポジトリやグループの構造がわからないので、適当に読み替えてください)
    • Satisfy を All から Any に変更する
      おそらく、TracLightning のデフォルトは Satisfy All になっているので匿名アクセスができないかと思います。

    というかたちで、認証は有効なまま ClickOnce 以下のみ認証を外すこともできます。詳しいことは、Apache のマニュアルなんかで。

    > こういうことがあるので
    ~略~
    > 個々のモジュールについてきちんと設定方法を理解すべきです。

    どちらかというと、個々の設定については理解されているか、自身で調べて解決されているように思いますので、困っておられる点はそこではないように思います。ClickOnce の配備エラーに対して、そのエラーの原因となる部分の特定をどのようにしていくか?その原因を解決する設定はどこにあるのか?といったところに難があったのかと思います。

    2011年10月20日 3:56
  • こんにちは、りーそる さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。

    有効な情報をいただいているようでしたので、他の方にも情報を有効活用いただくため、勝手ながら私のほうで回答としてマークさせていただきました。
    アドバイスくださったみなさん、いつもありがとうございます。

    いただいた情報の中で、解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、次回からりーそる さんもご協力よろしくお願いいたしますね。

    今後とも、MSDN フォーラムをよろしくお願いいたします。それでは。
                                                                                                                            
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2011年10月26日 5:48