tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルセットアップと配置について
記事No7168
投稿日: 2008/03/08(Sat) 16:46
投稿者よっくん
こんにちは。

開発環境 WinXP Visual Studio 2005

上記環境で、セットアップと配置 を用いて
インストーラーを作成しました。
作成にあたり、↓を参考に行いました。

http://msdn2.microsoft.com/ja-jp/library/k3bb4tfd(VS.80).aspx

Win2000のPCにFramework2.0と日本語パッケージとSP1を入れて
インストールを行ったのですが、うまく起動しません。

・見つかった依存関係
 .NET Framework
 AxInterop.MSWinsockLib
 Interop.MSWinsockLib
 MSWINSCK.OCX

記事No:7149と同じ事象っぽいのですが
どうやってもうまく起動できません。
花ちゃん様が

>下記はどうなっているのかな?
>Interop.MSHierarchicalFlexGridLib.dll
>AxInterop.MSHierarchicalFlexGridLib.dll
>開発環境の別のフォルダでペーストした場合はどうなりますか?

と返信されておりましたので開発環境で試したところ
別のフォルダにペーストした場合、
exeと同じ場所にDLLがなくても起動しました。

Win2000のPCでは、exeと同じ場所においても
system32に入れても両方に置いても同じエラーとなりました。


以下、エラーの詳細です
------------------------------------------
System.IO.FileNotFoundException: ファイルまたはアセンブリ 'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、
またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが
見つかりません。
ファイル名 'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' です。
   場所 OrderSystem.DBmodule.DBstschk(String& SQLtxt)
   場所 OrderSystem.chkForm.chkForm_Load(Object eventSender, EventArgs eventArgs)
   場所 System.EventHandler.Invoke(Object sender, EventArgs e)
   場所 System.Windows.Forms.Form.OnLoad(EventArgs e)
   場所 System.Windows.Forms.Form.OnCreateControl()
   場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   場所 System.Windows.Forms.Control.CreateControl()
   場所 System.Windows.Forms.Control.WmShowWindow(Message& m)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   場所 System.Windows.Forms.ContainerControl.WndProc(Message& m)
   場所 System.Windows.Forms.Form.WmShowWindow(Message& m)
   場所 System.Windows.Forms.Form.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

警告: アセンブリ バインドのログ記録がオフにされています。
アセンブリ バインドのエラー ログを有効にするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) を 1 に設定してください。
注意: アセンブリ バインドのエラー ログに関連するパフォーマンス ペナルティが
あります。
この機能をオフにするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog]
を削除します。



************** 読み込まれたアセンブリ **************
mscorlib
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.1433 (REDBITS.050727-1400)
    コードベース: file:///c:/WINNT/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
OrderSystem
    アセンブリ バージョン: 1.0.2986.20570
    Win32 バージョン: 1.0.2986.20570
    コードベース: file:///C:/Program%20Files/@@@@@/Ordersystem%20Client/
OrderSystem.exe
----------------------------------------
Microsoft.VisualBasic
    アセンブリ バージョン: 8.0.0.0
    Win32 バージョン: 8.0.50727.1433 (REDBITS.050727-1400)
    コードベース: file:///C:/WINNT/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/
Microsoft.VisualBasic.dll
----------------------------------------
System
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.1433 (REDBITS.050727-1400)
    コードベース: file:///C:/WINNT/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.1433 (REDBITS.050727-1400)
    コードベース: file:///C:/WINNT/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/
System.Windows.Forms.dll
----------------------------------------
System.Drawing
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.1433 (REDBITS.050727-1400)
    コードベース: file:///C:/WINNT/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/
System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.1433 (REDBITS.050727-1400)
    コードベース: file:///C:/WINNT/assembly/GAC_MSIL/System.Runtime.Remoting/
2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
mscorlib.resources
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.1433 (REDBITS.050727-1400)
    コードベース: file:///c:/WINNT/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.42 (RTM.050727-4200)
    コードベース: file:///C:/WINNT/assembly/GAC_MSIL/System.Windows.Forms.resources/
2.0.0.0_ja_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** JIT デバッグ **************
Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
またはコンピュータ (machine.config) の構成ファイルの jitDebugging
値を system.windows.forms セクションで設定しなければなりません。
アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
なりません。

例:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

JIT デバッグが有効なときは、このダイアログ ボックスで処理するよりも、
ハンドルされていない例外はすべてコンピュータに登録された
JIT デバッガに設定されなければなりません。

-------------------------------------------------
以上のエラーが出ます。


すみませんが、見直すべき場所等ありましたら
ご指示頂けないでしょうか。
宜しくお願いいたします。

[ツリー表示へ]
タイトルRe: セットアップと配置について
記事No7170
投稿日: 2008/03/09(Sun) 17:20
投稿者魔界の仮面弁士
> System.IO.FileNotFoundException: ファイルまたはアセンブリ 'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、
> またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが
> 見つかりません。
> ファイル名 'ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' です。

ADODB.DLL を参照しているが、それが実行環境に見当たらない、と言っていますね。

C:\WINDOWS\assembly に、"ADODB" が存在しているかどうか、チェックしてみてください。

[ツリー表示へ]
タイトルRe^2: セットアップと配置について
記事No7174
投稿日: 2008/03/10(Mon) 15:06
投稿者よっくん
魔界の仮面弁士様
アドバイスありがとうございます。
>C:\WINDOWS\assembly に、"ADODB" が存在しているかどうか、チェックしてみてください。

なかったのですが、参照設定をやり直したところInterop.ADODB.dllが出来上がって
ADODBのエラーは出なくなりました。そのかわり今度は

************** 例外テキスト **************
System.IO.FileNotFoundException: ファイルが見つかりません。
   場所 Microsoft.VisualBasic.Interaction.Shell(String PathName, AppWinStyle Style,
Boolean Wait, Int32 Timeout)
   場所 OrderSystem.chkForm.chkForm_Load(Object eventSender, EventArgs eventArgs)
   場所 System.EventHandler.Invoke(Object sender, EventArgs e)
   場所 System.Windows.Forms.Form.OnLoad(EventArgs e)
   場所 System.Windows.Forms.Form.OnCreateControl()
   場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   場所 System.Windows.Forms.Control.CreateControl()
   場所 System.Windows.Forms.Control.WmShowWindow(Message& m)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   場所 System.Windows.Forms.ContainerControl.WndProc(Message& m)
   場所 System.Windows.Forms.Form.WmShowWindow(Message& m)
   場所 System.Windows.Forms.Form.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr
wparam, IntPtr lparam)

以下略

となり、
System.IO.FileNotFoundException: ファイルが見つかりません。
という感じでヒントすら無くなってしまいました…orz

ディストリビューションウィザードだった頃はこんなことなかったのに…。

こんな情報でもしお分かりの事がございましたら
アドバイスをお願い致します。

[ツリー表示へ]
タイトルRe^3: セットアップと配置について
記事No7177
投稿日: 2008/03/10(Mon) 15:57
投稿者魔界の仮面弁士
> >C:\WINDOWS\assembly に、"ADODB" が存在しているかどうか、チェックしてみてください。
> なかったのですが、参照設定をやり直したところInterop.ADODB.dllが出来上がって
> ADODBのエラーは出なくなりました。

Interop.ADODB.DLL と ADODB.DLL は別物です。

ADODB.DLL は、PIA(プライマリ相互運用機能アセンブリ)と呼ばれるものであり、
Interop.ADODB.DLL の方はIA と呼ばれ、Visual Studio によって自動生成されるものです。

いずれも、COM オブジェクト(であるところの、ActiveX Data Object ライブラリ)と
.NET の世界をつなぐ仲介役である点は一緒ですが、Microsoft が正式にサポートするのは
PIA の方だけあり、Interop.ADODB.DLL の利用は推奨されていません。

http://support.microsoft.com/kb/318559/ja
http://support.microsoft.com/kb/321415/ja

なお、ADODB.DLL の方は、Fields コレクションや Parameters コレクションなどが
マネージオブジェクトになっていますが、Interop.ADODB.DLL の方は COM オブジェクトの
ままなので、オブジェクトの解放(Marshal.ReleaseComObject)の手間が増大します。


> 場所 Microsoft.VisualBasic.Interaction.Shell(String PathName, AppWinStyle Style,
>  Boolean Wait, Int32 Timeout)

Shell 関数を呼び出しているところがありますよね。
そこに指定されたパスは正しいですか?

[ツリー表示へ]
タイトル【解決】Re^4: セットアップと配置について
記事No7181
投稿日: 2008/03/10(Mon) 18:02
投稿者よっくん
魔界の仮面弁士様

アドバイスありがとうございます。
Interop.ADODB.DLL と ADODB.DLL が別物というのは
どこかのサイトで読んで知っていたのですが、
assemblyフォルダに入れる方法がわからず諦めていました。
諦めずに調べて、やっと入れ方が判りました。
(フォルダの追加でグローバルアセンブリキャッシュフォルダを足して
 そこに.NETのADODBを追加すればよかったんですね…)

あと、プロジェクト出力の際に「プライマリ出力」を選んだら
どうやっても駄目だったのですが
「コンテンツファイル」にして自分でファイルを選んでいったら
うまくいきました。


> > Shell 関数を呼び出しているところがありますよね。
> そこに指定されたパスは正しいですか?

一箇所だけあったのですが
Call Shell(My.Application.Info.DirectoryPath & "\set.exe", AppWinStyle.NormalFocus)
同じフォルダにあるset.exeを実行するようにしておりましたが
特に問題ないかと…。

何はともあれ、無事インストール後も起動するようになりました。
ありがとうございます。

やはり、参考書も無しにVB6から2005への移行は厳しいですね…orz
日々勉強です…。

[ツリー表示へ]