C#2005 ExpressEditionでの配布方法
GDNJで紹介していただきました。
LAN環境でのClickOnceで困っています。
C#2005ExpressEditionにて開発を行い
ClickOnceを用いて社内webサーバの配布を考えています。
対象の端末には.NetFramework2.0のランタイムが
インストールされていないため、プロジェクトのプロパティで
必須コンポーネントにランタイムを含みましたがビルド→発行時に
dotnetfx.exeが見つからない旨のメッセージが表示されうまくいきませんでした。
で、いろいろ試行しましたが
dotnetfx.exeを配置して場所の指定をしても
「提供先からダウンロードが選択されていない」
とか「~.exeが見つからない」とか諸々のエラーで失敗してしまいます。ClickOnceでランタイム込みの配布を考えると
どのような手順で行えば良いのでしょうか?
ご教示いただければ幸いです。お願いいたします。
回答
Mas.Satoさん、お返事が遅くなりましてすみません。 また、Masahiko Isshikiさん、フォローありがとうございました。
まずお詫びからはじめないといけないのですが、実はC# Express Edition(および他のExpress Edition) は、デフォルトのインストールの状態では、[アプリケーションと同じ場所から必須コンポーネントを~] のオプションを選択しても正しく動作しません。 これは、Express Editionはパッケージ版のVisual Studioと異なり、ダウンロードサイズを小さくするために.NET Framework 2.0などの必須コンポーネントのセットアップファイルが製品に含まれていないためです。 その点を失念していて、その旨をお伝えすることなく返答してしまったので、Mas.Satoさんをさらに困惑させてしまったことと思います。 大変失礼しました。
で、Express Editionで[アプリケーションと同じ場所から~]を動作させる方法ですが、これはMas.Satoさんが試みられている方法(セットアップファイルをBootstrapperフォルダ以下DotNetFxフォルダ中に配置する)で正しいです。 現在はinstmsia.exeがなくてエラーが発生していますが、そのファイルも同様に配置すればOKです。
同じ問題でこのスレッドを参照される方もいらっしゃると思うので、.NET Framework 2.0を必須コンポーネントとした場合を例として、改めて手順をご紹介します。
まず必要なセットアップファイルをダウンロードセンターから入手します。 それぞれの入手先は以下のとおりです。dotnetfx.exe - Microsoft .NET Framework Version 2.0 再頒布可能パッケージ (x86)
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=jalangpack.exe - Microsoft .NET Framework 2.0 日本語 Language Pack (x86)
http://www.microsoft.com/downloads/details.aspx?FamilyID=39c8b63b-f64b-4b68-a774-b64ed0c32ae7&DisplayLang=jaWindowsInstaller-KB893803-v2-x86.exe - Windows Installer 3.1 Redistributable (v2) - 日本語
http://www.microsoft.com/downloads/details.aspx?FamilyID=889482fc-5f56-4a38-b838-de776fd4138c&DisplayLang=jaInstmsia.exe - Windows Installer 2.0 Redistributable for Windows 95, 98, and Me (*英語版ファイルになります)
http://www.microsoft.com/downloads/details.aspx?FamilyID=cebbacd8-c094-4255-b702-de3bb768148f&DisplayLang=en
ダウンロードしたファイルのうち、dotnetfx.exe、WindowsInstaller-KB893803-v2-x86.exe、Instmsia.exe を Program Files\Visual Studio 8\SDK\v2.0\Boostrapper\Packages\DotNetFx フォルダに配置。 langpack.exe はその下の Ja フォルダに配置します。以上の手順で、[アプリケーションと同じ場所から~]のオプションを選択してアプリケーションの発行をすれば、発行先フォルダに必須コンポーネントのセットアップファイルもコピーされます。
この手順を行っておけば [次の場所から必須コンポーネントをダウンロードする] も動作させることができます。 コンポーネントの配置の構成についてはMasahiko Isshikiさんにご説明いただいたとおりです。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。Mas.Sato は書きました: ・社内webに配置する際のディレクトリ構成は?
……省略……bootstrapperフォルダごとサイトにコピーしました。
このやり方は間違いでしょうか?
できれば正しい構成の一例を教えていただけないでしょうか?
必須コンポーネントのインストール場所で、
「(2)アプリケーションと同じ場所……」や「(3)次の場所……」を選択した場合、
ブートストラッパ(=必須コンポーネント)は、Visual Studio 2005が自動的にコピーするはずです。
コピー先は「発行場所」と同じフォルダ内です。「(3)次の場所」を選んだ場合は、コピーされたそれらのフォルダを、そこで指定した場所(=必須コンポーネントのダウンロード場所)に移動させる必要があります。ここで「.NET Framework 2.0」を必須コンポーネントとして指定した場合、発行場所に「dotnetfx」フォルダが生成さるので、それを必須コンポーネントの場所に移動させます。
例えば、次のような構成になっているなら、
・発行場所:\\server\www\masa\ClickOnce\
・インストールのURL(配置場所):http://server/masa/ClickOnce/
・必須コンポーネントの場所:http://server/masa/Download/次のように移動させます。
「http://server/masa/ClickOnce/dotnetfx/」
(\\server\www\masa\ClickOnce\dotnetfx\)
↓
「http://server/masa/Download/dotnetfx/」
(\\server\www\masa\Download\dotnetfx\)この状態でClickOnceを実行すればうまくいくはずです。
少なくとも私の場合はうまく動作しています。
すべての返信
Mas.Sato さん、ご投稿ありがとうございます。
必須コンポーネントの設定項目にチェックを入れて、必要なランタイムコンポーネントを選択して発行を行えばOKです。
差し支えなければ Mas.Sato さんが問題に遭われている環境、設定方法、エラーメッセージ等の詳細をお知らせいただけますでしょうか。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。返信ありがとうございます。
状況としては、
・プロジェクトのプロパティ、[発行]タブの[必須コンポーネント]で
[.NET Framework2.0]にチェックを付け、必須コンポーネントのインストール場所で
[必須コンポーネントをコンポーネントの開発元~]を選択、[今すぐ発行]で指定した
社内webサーバに発行。・発行されたpublish.htmをクライアントPCから開くとインストールのボタンがあるので
クリック、その後許諾同意ウィンドウが出てくるので[同意する]をクリック。・ダウンロード中と進捗バーが出た後に以下のようなエラーのメッセージ。
--------------------------------------------------
次のリソースのダウンロード中にエラーが発生しました。http://go.microsoft.com/fwlink/LinkId=49256
--------------------------------------------------上記のような感じです。
で、dotnetfx.exeをbootstrapperフォルダ内のdotnetfxフォルダに
コピーしたり、必須コンポーネントのインストール場所を指定したりしても
ダメでした。この際のエラー内容は以下のとおりです。
--------------------------------------------------
必須コンポーネントのインストール場所が'コンポーネントの開発元のWebサイト'に
設定されていません。項目'.NET
Framework2.0'のファイル'DotnetFX\instmsaia.exe'がディスクに見つかりません。
--------------------------------------------------開発環境はVC#2005Express、後からSDKをインストールしました。
社内webサーバ、クライアントPCともにLAN内に存在しています。
社外に出ることはできないのでgo.microsoft.comなどには接続できません。理想としては、社内webサーバのどこか一箇所にランタイム等を配置し
ClickOnceで必要に応じてインストールできるよう運用できればと思ってます。必須コンポーネントのインストール場所を指定する箇所で、[アプリケーションと同じ場所から必須コンポーネントを~] の方を選んでお試しいただけますか。 こちらのオプションでは、アプリケーションの発行先フォルダに必須コンポーネントのインストーラーが配置されます。
[必須コンポーネントをコンポーネントの開発元~] の場合は、必須コンポーネントはWebサーバには配置されずインストールの度に開発元のサイトからのダウンロードが実行されますので、インターネット接続が必要になります。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。補足です。
>理想としては、社内webサーバのどこか一箇所にランタイム等を配置し
>ClickOnceで必要に応じてインストールできるよう運用できればと思ってます。この場合は、3つ目のオプション [次の場所から必須コンポーネントをダウンロードする] をお試しください。
Webサーバに必須コンポーネントのインストーラーを配置してそのURLを指定しておけば、そこからダウンロードが実行されます。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。遅くなりましたが
「コンポーネントの開発元~」以外の2つのオプション再度試しました。
が、やはりうまくいきませんでした。発行時のエラーメッセージは前述のものとほぼ同様です。
補足で書かれているような、
3つ目のオプション「次の場所から~」で運用できればと
思っています。そこでいくつかわからない点があるのですが…・社内webに配置する際のディレクトリ構成は?
前回試した際はSDKフォルダ内のbootstrapperフォルダ以下
dotnetfxフォルダのjaフォルダにdotnetfx.exe(MSのサイトよりダウンロードした
再頒布パッケージ)とwindowsinstaller-KB893803-v2-x86.exeを配置し
bootstrapperフォルダごとサイトにコピーしました。
このやり方は間違いでしょうか?できれば正しい構成の一例を教えていただけ
ないでしょうか?・bootstrapper(以下の各パッケージフォルダの)package.xmlは
編集の必要があるのでしょうか?
前回いろいろ試した際、エラーで表示されているファイルの記述が
どこかにないかと思い検索したところbootstrapper内のpackage.xmlの
いくつかの箇所にそれらしい記述はありました。
ここの文字列をサイトに配置したファイルへのリンクに置換してみましたが
やはりうまくいかず、それどころかエラーが増えてしまい慌てて元のファイルに
戻した経緯があります。・instmsia.exeはどこにあるのでしょうか?
大抵のエラーでdotnetfx.exeとともに見つからないとされる
「instmsia.exe」、これはどこにあるのでしょうか?探してみましたが
見つかりません。dotnetfx.exeのキャビネットから抽出して探してもみましたが
やはり見つかりませんでした。もしかしたら、bootstrapperをどうにかする、という前提自体
間違っているのでしょうか?ヘルプ等参考にした際bootstrapperという
言葉が頻繁に出てきたので何の疑いもなく今に至ってます。Mas.Sato は書きました: ・社内webに配置する際のディレクトリ構成は?
……省略……bootstrapperフォルダごとサイトにコピーしました。
このやり方は間違いでしょうか?
できれば正しい構成の一例を教えていただけないでしょうか?
必須コンポーネントのインストール場所で、
「(2)アプリケーションと同じ場所……」や「(3)次の場所……」を選択した場合、
ブートストラッパ(=必須コンポーネント)は、Visual Studio 2005が自動的にコピーするはずです。
コピー先は「発行場所」と同じフォルダ内です。「(3)次の場所」を選んだ場合は、コピーされたそれらのフォルダを、そこで指定した場所(=必須コンポーネントのダウンロード場所)に移動させる必要があります。ここで「.NET Framework 2.0」を必須コンポーネントとして指定した場合、発行場所に「dotnetfx」フォルダが生成さるので、それを必須コンポーネントの場所に移動させます。
例えば、次のような構成になっているなら、
・発行場所:\\server\www\masa\ClickOnce\
・インストールのURL(配置場所):http://server/masa/ClickOnce/
・必須コンポーネントの場所:http://server/masa/Download/次のように移動させます。
「http://server/masa/ClickOnce/dotnetfx/」
(\\server\www\masa\ClickOnce\dotnetfx\)
↓
「http://server/masa/Download/dotnetfx/」
(\\server\www\masa\Download\dotnetfx\)この状態でClickOnceを実行すればうまくいくはずです。
少なくとも私の場合はうまく動作しています。Mas.Satoさん、お返事が遅くなりましてすみません。 また、Masahiko Isshikiさん、フォローありがとうございました。
まずお詫びからはじめないといけないのですが、実はC# Express Edition(および他のExpress Edition) は、デフォルトのインストールの状態では、[アプリケーションと同じ場所から必須コンポーネントを~] のオプションを選択しても正しく動作しません。 これは、Express Editionはパッケージ版のVisual Studioと異なり、ダウンロードサイズを小さくするために.NET Framework 2.0などの必須コンポーネントのセットアップファイルが製品に含まれていないためです。 その点を失念していて、その旨をお伝えすることなく返答してしまったので、Mas.Satoさんをさらに困惑させてしまったことと思います。 大変失礼しました。
で、Express Editionで[アプリケーションと同じ場所から~]を動作させる方法ですが、これはMas.Satoさんが試みられている方法(セットアップファイルをBootstrapperフォルダ以下DotNetFxフォルダ中に配置する)で正しいです。 現在はinstmsia.exeがなくてエラーが発生していますが、そのファイルも同様に配置すればOKです。
同じ問題でこのスレッドを参照される方もいらっしゃると思うので、.NET Framework 2.0を必須コンポーネントとした場合を例として、改めて手順をご紹介します。
まず必要なセットアップファイルをダウンロードセンターから入手します。 それぞれの入手先は以下のとおりです。dotnetfx.exe - Microsoft .NET Framework Version 2.0 再頒布可能パッケージ (x86)
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=jalangpack.exe - Microsoft .NET Framework 2.0 日本語 Language Pack (x86)
http://www.microsoft.com/downloads/details.aspx?FamilyID=39c8b63b-f64b-4b68-a774-b64ed0c32ae7&DisplayLang=jaWindowsInstaller-KB893803-v2-x86.exe - Windows Installer 3.1 Redistributable (v2) - 日本語
http://www.microsoft.com/downloads/details.aspx?FamilyID=889482fc-5f56-4a38-b838-de776fd4138c&DisplayLang=jaInstmsia.exe - Windows Installer 2.0 Redistributable for Windows 95, 98, and Me (*英語版ファイルになります)
http://www.microsoft.com/downloads/details.aspx?FamilyID=cebbacd8-c094-4255-b702-de3bb768148f&DisplayLang=en
ダウンロードしたファイルのうち、dotnetfx.exe、WindowsInstaller-KB893803-v2-x86.exe、Instmsia.exe を Program Files\Visual Studio 8\SDK\v2.0\Boostrapper\Packages\DotNetFx フォルダに配置。 langpack.exe はその下の Ja フォルダに配置します。以上の手順で、[アプリケーションと同じ場所から~]のオプションを選択してアプリケーションの発行をすれば、発行先フォルダに必須コンポーネントのセットアップファイルもコピーされます。
この手順を行っておけば [次の場所から必須コンポーネントをダウンロードする] も動作させることができます。 コンポーネントの配置の構成についてはMasahiko Isshikiさんにご説明いただいたとおりです。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。遅くなりましたが、
無事配布に成功しました。これで社内でclikonce環境のデモと
ProfessionalEdition購入の備品購入伺いが出せます!!MSFT様、Masahiko Isshiki様
的確なアドバイスありがとうございました。