tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル発行したものがインストールできない
記事No7062
投稿日: 2008/02/22(Fri) 13:08
投稿者ひでと
VS2005 を使用を使用しています。
数ヶ月かかってようやく作ったプログラムを発行し、インストールしようとしました。
発行先を(MOに設定)して 発行自体は完了したのですが、インストールができません。
どこに問題があるのか、正直分からないのですがどの辺りを調べればよいのでしょうか?
install.log を見るように指示されたのですが、理解できません。
非常に大雑把な質問で申し訳ないのですがなにとぞ、ご指導ください。
install.logの内容を載せたいのですが、アドレスが記載されている為
エラーがでて 記載できません。

使用しているコントロールは 一般的なものとdatagridview
および コモンダイアログです。
また、テキストファイル dafault.dat をプログラム中で使用しています。

発行された ファイル名は AAをプロジェクト名とすると
setup.exe
AA.application
AA_1_0_0_4.application
AA_1_0_0_4  フォルダ
   Interop.Excel.dll.deploy
   Interop.Microsoft.Office.Core.dll.deploy
   Interop.VBIDE.dll.deploy
   AA.exe.deploy
      AA.exe.manifest   フォルダ内にあります

のようになっています。
また インストールしようとした PCは
XP Proffesional SP2のアップグレードをして、
Flamework 2.0 再配布可能なものをダウンロード、インストールいたしました。
よろしく お願いします。

[ツリー表示へ]
タイトルRe: 発行したものがインストールできない
記事No7064
投稿日: 2008/02/22(Fri) 14:54
投稿者魔界の仮面弁士
> 数ヶ月かかってようやく作ったプログラムを発行し、インストールしようとしました。
それは、ClickOnce での配布ですね。

単純な配布であれば、[Release]モードでビルドした後、bin フォルダの下にできる
ファイル一式を、実行環境にコピーするだけで動作しますよ。
(もちろん、.NET Framework がインストールされている必要はありますが)

あるいは、Visual Studio の[セットアップ プロジェクト]を使って、
インストーラとして生成した方が、融通は利くかと思います。
(Express Edition の場合、セットアップ プロジェクトは作成できませんが…)


> 発行先を(MOに設定)して 発行自体は完了したのですが、インストールができません。
[発行ウィザード]を使ったのであれば、その時の設定を教えてください。

[今すぐ発行]を使ったのであれば、[配布]タブには、「発行場所」とは別に
「インストールの URL」とがあるかと思いますが、その URL はどうされましたか?
また、[更新(U)...]のボタンの内容は、どのように設定されましたか?


> また インストールしようとした PCは
> XP Proffesional SP2のアップグレードをして、
> Flamework 2.0 再配布可能なものをダウンロード、インストールいたしました。
であれば「発行」せずとも、DLL/EXE をコピーするだけで動作するかと。

[ツリー表示へ]
タイトルRe^2: 発行したものがインストールできない
記事No7070
投稿日: 2008/02/22(Fri) 15:59
投稿者ひでと
ありがとうございます。
いろいろやってみて なんとか動かすことができました。

> > 数ヶ月かかってようやく作ったプログラムを発行し、インストールしようとしました。
> それは、ClickOnce での配布ですね。

setup.exe ができる形式ですから ClickOnceになるのでしょうか?
どうにも分からなかったので、binフォルダの中にある Releaseフォルダーの中
のファイルをコピーしました。(下記に教えていただいた方法と同じ?)

>
> 単純な配布であれば、[Release]モードでビルドした後、bin フォルダの下にできる
> ファイル一式を、実行環境にコピーするだけで動作しますよ。
> (もちろん、.NET Framework がインストールされている必要はありますが)

ここで テキストファイルの defalt.dat というプログラムで使用しているファイル
が有りまして、それが binフォルダーの下のDebugフォルダーの中にありましたので
それを 一緒にコピーしたところ、動くようになりました。

>
> あるいは、Visual Studio の[セットアップ プロジェクト]を使って、
> インストーラとして生成した方が、融通は利くかと思います。
> (Express Edition の場合、セットアップ プロジェクトは作成できませんが…)
セットアッププロジェクトの作成はできるようなのですが、難しくて意味不明です。

>
>
> > 発行先を(MOに設定)して 発行自体は完了したのですが、インストールができません。
> [発行ウィザード]を使ったのであれば、その時の設定を教えてください。
[ビルド][〜の発行]で進めましたが これが[発行ウイザード]でしょうか?

発行する場所を Eドライブにして
CD-ROMまたはDVD-ROMから
アプリケーションの更新を確認しない
です。

>
> [今すぐ発行]を使ったのであれば、[配布]タブには、「発行場所」とは別に
> 「インストールの URL」とがあるかと思いますが、その URL はどうされましたか?
> また、[更新(U)...]のボタンの内容は、どのように設定されましたか?
>
>
> > また インストールしようとした PCは
> > XP Proffesional SP2のアップグレードをして、
> > Flamework 2.0 再配布可能なものをダウンロード、インストールいたしました。
> であれば「発行」せずとも、DLL/EXE をコピーするだけで動作するかと。

今回はなんとか動きましたが、正しい[発行]の仕方を教えていただけるとありがたいです。

[ツリー表示へ]
タイトルRe^3: 発行したものがインストールできない
記事No7072
投稿日: 2008/02/22(Fri) 16:42
投稿者魔界の仮面弁士
> setup.exe ができる形式ですから ClickOnceになるのでしょうか?

VS2005 の、プロジェクトプロパティの[発行]タブから作成するのであれば、ClickOnce です。
setup.exe 無しで、*.application という XML ファイルをダブルクリックしても動作します。
(setup.exe は、.NET ランタイムなどの配布のために使われます)


> ここで テキストファイルの defalt.dat というプログラムで使用しているファイル

default.dat では無く、
defalt.dat なのですか?


> それを 一緒にコピーしたところ、動くようになりました。

ファイル不足だったようですね。

もし、その defalt.dat をプロジェクトに含めてあるのなら、
[ソリューション エクスプローラ]ウィンドウでそのファイルを選択し、
[プロパティ]ウィンドウの[ビルド アクション]を"コンテンツ"にし、
[出力ディレクトリにコピー]を"〜コピーする"にしておきます。

次に、[ソリューション エクスプローラ]ウィンドウから、対象となる
プロジェクト(≠ソリューション)を右クリックし、[プロパティ]を選び、
[発行]タブにある[アプリケーション ファイル(I)...]を押して
ダイアログを表示させます。

そのダイアログで、defalt.dat の[ダウンロード グループ]が、"(なし)"では無く
"(必要)" になっていることを確認してから、ダイアログを閉じてください。

最後に、元画面の(発行タブの)[今すぐ発行(N)]ボタンを押せば完了です。


> セットアッププロジェクトの作成はできるようなのですが、難しくて意味不明です。
ClickOnce による配置の場合、
 ・配布先を選択できません。(Program Files に配置されるわけではありません)
 ・ユーザ別インストーラなので、Windows に別ユーザでログオンするとアプリが使えません。
  (ログオンユーザが複数いる場合、ユーザごとにインストールが必要です)
といった制限がありますので、その点はご注意ください。


> > > 発行先を(MOに設定)して 発行自体は完了したのですが、インストールができません。
> > [発行ウィザード]を使ったのであれば、その時の設定を教えてください。
> [ビルド][〜の発行]で進めましたが これが[発行ウイザード]でしょうか?

当方の[ビルド]メニューに、その項目は無いのですが、おそらくそうだと思います。

[ツリー表示へ]
タイトル便乗質問:Side by Side
記事No7073
投稿日: 2008/02/22(Fri) 19:33
投稿者ダンボ
> 単純な配布であれば、[Release]モードでビルドした後、bin フォルダの下にできる
> ファイル一式を、実行環境にコピーするだけで動作しますよ。

便乗質問ですみません。私のbinフォルダには、
 Interop.Scripting.dll
 Interop.Shell32.dll
の2つがあります。ScriptingオブジェクトとShellオブジェクトを使っているからですね。
この2つのDLLはシステムに登録せずに、exeと同じ場所にあれば有効です。
こういうことを「Side by Side」と言うのでしょうか?

便乗質問その2
binフォルダをネットワーク共用フォルダーに置いて各クライアントから共用利用
しようとしましたが、動きませんでした。binフォルダを各PCのローカルに置けば
動きます。binフォルダをネットワーク共用フォルダーに置いても動作するように
するにはどんな手段が必要なのでしょうか?

[ツリー表示へ]
タイトルRe: 便乗質問:Side by Side
記事No7075
投稿日: 2008/02/22(Fri) 20:40
投稿者魔界の仮面弁士
> こういうことを「Side by Side」と言うのでしょうか?
それだけでは Side-by-Side (SxS) とは言えませんが、一応 Yes です。
.NET における SxS の詳しい定義は、このあたりを参照してみてください。
http://msdn2.microsoft.com/ja-jp/library/8477k21c.aspx


> binフォルダをネットワーク共用フォルダーに置いて各クライアントから共用利用
> しようとしましたが、動きませんでした。
信頼レベルの問題です。
標準では、ネットワーク上にあるファイルは、ローカルのものよりも制限が強くなります。
これは、「コード アクセス セキュリティ」と呼ばれる仕組みです。


たとえば、FileStream クラスの解説を見てください。
http://msdn2.microsoft.com/ja-jp/library/47ek66wy.aspx
最後の方に「アクセス許可:FileIOPermission」と書かれていますよね。

これはつまり、実行時に『ファイルへのアクセスを許可された場合』にしか
実行できないことを意味しています。
(他のクラスでも、プロパティやメソッドの解説に、アクセス許可レベルの記載があります)


> binフォルダをネットワーク共用フォルダーに置いても動作するように
> するにはどんな手段が必要なのでしょうか?
幾つかの手法があります。

まずは、高度なアクセス許可が必要なメソッドを使わないことです。
(API 呼び出しや、ActiveX/COM コンポーネントの利用なども避ける)


それらのメソッドがどうしても必要なら、「実行しても安全である」ことを、
実行する PC それぞれに信頼設定する必要があります。

環境によっては、その設定機能がコントロールパネル - 管理ツールに配置されています。
http://support.microsoft.com/kb/832742/ja

より詳細な情報を知りたい場合は、下記の[コード・アクセス・セキュリティ]をどうぞ。
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html

[ツリー表示へ]
タイトルRe^2: 便乗質問:Side by Side
記事No7082
投稿日: 2008/02/24(Sun) 07:38
投稿者ダンボ
魔界の仮面弁士 さん、いつもありがとうございます。

> .NET における SxS の詳しい定義は、このあたりを参照してみてください。
> http://msdn2.microsoft.com/ja-jp/library/8477k21c.aspx

実際に体験してみると理解が進みますね。(でもまだまだわからん)
ScriptingオブジェクトとShellオブジェクトは.Net Frameworkの標準品では
ないということでしょうかね。あえて.Net Frameworkの構成物から除いている?

> 環境によっては、その設定機能がコントロールパネル - 管理ツールに配置されています。
> http://support.microsoft.com/kb/832742/ja

おいおいと勉強してまいります。

[ツリー表示へ]
タイトルRe^3: 便乗質問:Side by Side
記事No7085
投稿日: 2008/02/25(Mon) 09:54
投稿者魔界の仮面弁士
> ScriptingオブジェクトとShellオブジェクトは.Net Frameworkの標準品では
> ないということでしょうかね。あえて.Net Frameworkの構成物から除いている?

標準物ではありません。

それらのオブジェクトは、.NET テクノロジの産物ではなく、それ以前にある
COM(ActiveX)テクノロジと呼ばれる技術の産物であり、.NET 非対応言語である
非.NET な VBScript, Excel VBA, JScript, Delphi 等からも利用できる代物です。

Scriptingオブジェクトの歴史は、VB6 よりもさらに前、Internet Explorer 3.0 の
時代には、既に存在していました。
もう一方の Shell オブジェクトの方はそれよりも少し新しく、シェル統合実装と
呼ばれていた Windows 95/OSR 2.1 や Windows 98、あるいは Internet Explorer 4.0 の
時代に登場しました。
両者ともに .NET よりも古くからあるオブジェクトです。


.NET から COM を扱う場合、相互運用アセンブリ(IA:Interop Assembly)と呼ばれる
ライブラリを中継する事になります(その分、.NET用ライブラリよりも効率が落ちます)。
Interop.Scripting.dll や Interop.Shell32.dll は、Visual Studio から COM を
参照設定したときに自動的に生成される .NET 用ライブラリですが、役割としては、
そうした「COM と .NET の間を取り持つ中継役」にあたるラッパー(wrapper)です。


ちなみに IA には、自動生成されるものだけではなく、グローバル アセンブリ キャッシュ
(GAC)と呼ばれる領域にインストールされる、Microsoft らによって事前に用意された
検証済み/電子署名済みの「プライマリ相互運用機能アセンブリ」(PIA)と呼ばれる物も
あります。(たとえば、Excel 用の Microsoft.Office.Interop.Excel.dll など)


なお PIA は、Microsoft による正式なサポートを受けることができますが、
IA の方は自動生成されるライブラリという事もあって、動作は保証されていません。

[ツリー表示へ]