C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[16]: VB6のインストーラ


(過去ログ 123 を表示中)

[トピック内 17 記事 (1 - 17 表示)]  << 0 >>

■73553 / inTopicNo.1)  VB6のインストーラ
  
□投稿者/ さいとお (1回)-(2014/10/09(Thu) 16:12:56)

分類:[VB6 以前] 

Visual Studio Installer 1.1 を使わずに VB6 アプリのインストーラを
作成する方法を調べています。何か情報をお持ちの方、いらっしゃいますか。

やったこと:
Visual Studio Installer 1.1 のプロジェクトを 変換ウィザードを使い
Visual Studio 2008 形式に変換したところ、「正常に変換されました」と
表示あれますが、ソリューションエクスプローラには「利用不可」と表示
されて、VS2008 の環境でプロジェクトをビルドできません。

Visual Studio 2008 にてセットアッププロジェクトを作成し、各 OCX の
プロパティに COM や COMSelfReg を指定しましたが、Windows7(64bit)で
コモンダイアログの表示部分で固まります。

背景:
2014/08/11 に公開された Windows の更新プログラム "KB2918614" を
適用した Windows Vista、Windows 7、Windows 8, Windows 8.1 にて、
"エラー 2709 オフライン参加完了情報が見つかりませんでした。" が
発生して VB6 アプリをインストールできなくなったため。

引用返信 編集キー/
■73554 / inTopicNo.2)  Re[1]: VB6のインストーラ
□投稿者/ とっちゃん (258回)-(2014/10/09(Thu) 19:28:43)
とっちゃん さんの Web サイト
No73553 (さいとお さん) に返信
> Visual Studio Installer 1.1 を使わずに VB6 アプリのインストーラを
> 作成する方法を調べています。何か情報をお持ちの方、いらっしゃいますか。
>
InstallShield(Limited Editionを含む) や、WiX あたりが現役のインストーラ作成ツールになりますかね。


> やったこと:
> Visual Studio Installer 1.1 のプロジェクトを 変換ウィザードを使い
> Visual Studio 2008 形式に変換したところ、「正常に変換されました」と
> 表示あれますが、ソリューションエクスプローラには「利用不可」と表示
> されて、VS2008 の環境でプロジェクトをビルドできません。
>
Visual Studio Installer(以下VSI) は、VSのセットアッププロジェクトの前身にあたる
存在ですが、アドインのため、コンバート機能はないはずです。
(VSのソリューションのコンバートだけが行われているはず)

これは、VSIに限った話ではなく、ほかの製品でもアドインで追加できる
プロジェクトならみな同様です(WiXや、InstallShield のVSプロジェクトなど)。

> Visual Studio 2008 にてセットアッププロジェクトを作成し、各 OCX の
> プロパティに COM や COMSelfReg を指定しましたが、Windows7(64bit)で
> コモンダイアログの表示部分で固まります。
>
OCXは、自作のものですか?それとも、VB添付のものですか?
もし、添付のものであれば、VB6のOCXのマージモジュールがあると思います。
それを利用すれば、VSIのままでもインストールできると思うのですが...

だめなのかなぁ?

VB6の添付OCXのマージモジュールは、もしかするとInstallShield の
プロ版とかなら添付しているかもしれません(わかりません)。

試しに購入してみるというような金額ではないので(Expressとかじゃ
おそらく実現できない)、無下にお勧めできるわけではありませんが。


> 背景:
> 2014/08/11 に公開された Windows の更新プログラム "KB2918614" を
> 適用した Windows Vista、Windows 7、Windows 8, Windows 8.1 にて、
> "エラー 2709 オフライン参加完了情報が見つかりませんでした。" が
> 発生して VB6 アプリをインストールできなくなったため。
>
エラー 2709 は検索するといくつかヒットしますね。
ただ、どこもKBをアンインストールする以外の選択肢で解決しているところは見かけませんが...

引用返信 編集キー/
■73556 / inTopicNo.3)  Re[2]: VB6のインストーラ
□投稿者/ さいとお (2回)-(2014/10/09(Thu) 21:43:50)
No73554 (とっちゃん さん) に返信
> ■No73553 (さいとお さん) に返信
>>Visual Studio Installer 1.1 を使わずに VB6 アプリのインストーラを
>>作成する方法を調べています。何か情報をお持ちの方、いらっしゃいますか。
>>
> InstallShield(Limited Editionを含む) や、WiX あたりが現役のインストーラ作成ツールになりますかね。

情報ありがとうございます。

>>やったこと:
>>Visual Studio Installer 1.1 のプロジェクトを 変換ウィザードを使い
>>Visual Studio 2008 形式に変換したところ、「正常に変換されました」と
>>表示あれますが、ソリューションエクスプローラには「利用不可」と表示
>>されて、VS2008 の環境でプロジェクトをビルドできません。
>>
> Visual Studio Installer(以下VSI) は、VSのセットアッププロジェクトの前身にあたる
> 存在ですが、アドインのため、コンバート機能はないはずです。
> (VSのソリューションのコンバートだけが行われているはず)
>
> これは、VSIに限った話ではなく、ほかの製品でもアドインで追加できる
> プロジェクトならみな同様です(WiXや、InstallShield のVSプロジェクトなど)。

セットアッププロジェクトを変換できない件、了解しました。

>>Visual Studio 2008 にてセットアッププロジェクトを作成し、各 OCX の
>>プロパティに COM や COMSelfReg を指定しましたが、Windows7(64bit)で
>>コモンダイアログの表示部分で固まります。
>>
> OCXは、自作のものですか?それとも、VB添付のものですか?
> もし、添付のものであれば、VB6のOCXのマージモジュールがあると思います。
> それを利用すれば、VSIのままでもインストールできると思うのですが...

アプリで使用しているOCXはコモンダイアログなど全てVB6付属のOCXです。
VB6アプリからコモンダイアログを表示したとき、固まってしまいます。

Windows7 の XP Mode では、基本動作に問題がなかったので、OCX周りの
登録などが怪しいのかな と思っています。

マージモジュールの登録や関連付けなどは、次のURLを参考に作業してみます。
http://support.microsoft.com/kb/248023/ja

> VB6の添付OCXのマージモジュールは、もしかするとInstallShield の
> プロ版とかなら添付しているかもしれません(わかりません)。
>
> 試しに購入してみるというような金額ではないので(Expressとかじゃ
> おそらく実現できない)、無下にお勧めできるわけではありませんが。

>>背景:
>>2014/08/11 に公開された Windows の更新プログラム "KB2918614" を
>>適用した Windows Vista、Windows 7、Windows 8, Windows 8.1 にて、
>>"エラー 2709 オフライン参加完了情報が見つかりませんでした。" が
>>発生して VB6 アプリをインストールできなくなったため。
> >
> エラー 2709 は検索するといくつかヒットしますね。
> ただ、どこもKBをアンインストールする以外の選択肢で解決しているところは見かけませんが...

インストーラを更新すれば何とかなるかな と思い、模索していました。

引用返信 編集キー/
■73561 / inTopicNo.4)  Re[3]: VB6のインストーラ
□投稿者/ とっちゃん (259回)-(2014/10/10(Fri) 11:17:08)
とっちゃん さんの Web サイト
No73556 (さいとお さん) に返信
> アプリで使用しているOCXはコモンダイアログなど全てVB6付属のOCXです。
> VB6アプリからコモンダイアログを表示したとき、固まってしまいます。
>
コモンダイアログを呼び出すタイミング(ダイアログが出る前)に固まるのでしょうか?
それとも、ダイアログが出てきて固まるのでしょうか?

前者と後者では条件が違います。

また、単に「固まる」といっても、いろいろな状態があります。
わかったからと言って解決策があるとは限りませんが
もしかしたら、詳しい人が反応してくれるかもしれません。


> Windows7 の XP Mode では、基本動作に問題がなかったので、OCX周りの
> 登録などが怪しいのかな と思っています。
>
XP Mode は、一見すると Windows 7 で動いているように見えますが
その実態は、リモートデスクトップでつないだXPで動いている画面を
切り張りしているだけの特殊なモードになります。

そのため、アプリは、「XP 上」で動作している状態となっています。

通常のXPとまったく同じわけではありませんが、アプリ自身は
自分はXPで動いていると思っていますよ。




> マージモジュールの登録や関連付けなどは、次のURLを参考に作業してみます。
> http://support.microsoft.com/kb/248023/ja
>
えーっと。。。マージモジュールというのは、インストーラでは
一種のライブラリと呼べるもので、ここに書かれているような設定を
全部詰め込んだ状態で用意されています。
なので、単純に指定すれば使えるようになっています。

全ての再配布可能モジュールがマージモジュールを用意しているわけではありませんが
最近では、多くのコンポーネント(特にグローバルレジストするCOM系)が
マージモジュールを用意しています。

VB6用のマージモジュールも、存在しています(今でも入手可能かどうかは分かりません)。
これがあれば、難しいことは考えず、このマージモジュールをリンクするだけで
必要ファイルをインストールしてくれます。

ただし、今回の問題が回避できるのか?については分かりませんが。。。


> インストーラを更新すれば何とかなるかな と思い、模索していました。
>
VSIで作っても、現行最新系のmsi作成用ツールを使っても
出来上がるものは基本的には同じです。

もっとも、提供時期等々を考えるとかなり古いので更新してもいい時期ではありますが。

で、検索したら、あっさり見つかりました。
http://www.microsoft.com/ja-jp/download/details.aspx?id=5883

ここに、VB6のマージモジュールがあります。これを使えば
OCXの登録情報が全部このマージモジュール内で設定されています。

これを使えば解決するかどうかについては分かりませんが。

引用返信 編集キー/
■73592 / inTopicNo.5)  Re[4]: VB6のインストーラ
□投稿者/ さいとお (3回)-(2014/10/14(Tue) 21:21:50)
丁寧な解説、ありがとうございます。

No73561 (とっちゃん さん) に返信
> ■No73556 (さいとお さん) に返信
>>アプリで使用しているOCXはコモンダイアログなど全てVB6付属のOCXです。
>>VB6アプリからコモンダイアログを表示したとき、固まってしまいます。
>>
> コモンダイアログを呼び出すタイミング(ダイアログが出る前)に固まるのでしょうか?
> それとも、ダイアログが出てきて固まるのでしょうか?
>
> 前者と後者では条件が違います。
>
> また、単に「固まる」といっても、いろいろな状態があります。
> わかったからと言って解決策があるとは限りませんが
> もしかしたら、詳しい人が反応してくれるかもしれません。

コモンダイアログが表示されず、5-6秒経過すると「無応答です。
アプリケーションを終了しますか?」のような確認メッセージが
表示されてしまいます。

>>マージモジュールの登録や関連付けなどは、次のURLを参考に作業してみます。
>>http://support.microsoft.com/kb/248023/ja
>>
> えーっと。。。マージモジュールというのは、インストーラでは
> 一種のライブラリと呼べるもので、ここに書かれているような設定を
> 全部詰め込んだ状態で用意されています。
> なので、単純に指定すれば使えるようになっています。
>
> 全ての再配布可能モジュールがマージモジュールを用意しているわけではありませんが
> 最近では、多くのコンポーネント(特にグローバルレジストするCOM系)が
> マージモジュールを用意しています。
>
> VB6用のマージモジュールも、存在しています(今でも入手可能かどうかは分かりません)。
> これがあれば、難しいことは考えず、このマージモジュールをリンクするだけで
> 必要ファイルをインストールしてくれます。
>
> ただし、今回の問題が回避できるのか?については分かりませんが。。。
>
> で、検索したら、あっさり見つかりました。
> http://www.microsoft.com/ja-jp/download/details.aspx?id=5883
>
> ここに、VB6のマージモジュールがあります。これを使えば
> OCXの登録情報が全部このマージモジュール内で設定されています。
>
> これを使えば解決するかどうかについては分かりませんが。

ダウンロードしてみましたが、msnファイルをmsiファイルに組み込む方法が
よく解らなかったりします。もう少し調べてみます。

>>インストーラを更新すれば何とかなるかな と思い、模索していました。
>>
> VSIで作っても、現行最新系のmsi作成用ツールを使っても
> 出来上がるものは基本的には同じです。
>
> もっとも、提供時期等々を考えるとかなり古いので更新してもいい時期ではありますが。

セットアップするとき"エラー 2709 ..."が回避でき、かつ VB6アプリから
呼び出しているOCXなどの基本動作が出来れば、何でも構わないというのが
本音だったりします。

引用返信 編集キー/
■73600 / inTopicNo.6)  Re[5]: VB6のインストーラ
□投稿者/ とっちゃん (261回)-(2014/10/15(Wed) 12:01:11)
とっちゃん さんの Web サイト
No73592 (さいとお さん) に返信
>>また、単に「固まる」といっても、いろいろな状態があります。
>>わかったからと言って解決策があるとは限りませんが
>>もしかしたら、詳しい人が反応してくれるかもしれません。
>
> コモンダイアログが表示されず、5-6秒経過すると「無応答です。
> アプリケーションを終了しますか?」のような確認メッセージが
> 表示されてしまいます。
>
「応答なし」になるってことですね。
CPUが忙しい状態なら、ビジーループ(いわゆる無限ループに陥った状態)となり
CPUが暇な状態なら、デッドロックとなります。

どちらになってるかはわかりません。

> ダウンロードしてみましたが、msnファイルをmsiファイルに組み込む方法が
> よく解らなかったりします。もう少し調べてみます。
>
展開したら、なんとか.msm がたくさん出てきたと思います。
これらを、
C:\Program Files (x86)\Common Files\Merge Modules
(32bitOSの場合は、(x86)がない場所)
にコピーします。

フォルダは既にあると思います。
その中にいくつかの msm が存在してると思いますので、一緒にコピーしておきます。

もしかするとすでにファイルがあるかもしれません。
ファイルがある場合は、今あるままでも多分問題はありません。
元々あるものをどっかにとっておいて、日付を見て(更新されていなければ...ですがw)
新しいほうを展開しておけばよいでしょう。

本当はバージョンがあるのですが、外からではわからないので。。。

展開したら、VSIから、マージモジュールを参照するなどで
多分できると思いますがどうやったらマージモジュールを参照できるのかわからないので
それについては、マニュアル等をお読みください。



> >>インストーラを更新すれば何とかなるかな と思い、模索していました。
> >>
>>VSIで作っても、現行最新系のmsi作成用ツールを使っても
>>出来上がるものは基本的には同じです。
>>
>>もっとも、提供時期等々を考えるとかなり古いので更新してもいい時期ではありますが。
>
> セットアップするとき"エラー 2709 ..."が回避でき、かつ VB6アプリから
> 呼び出しているOCXなどの基本動作が出来れば、何でも構わないというのが
> 本音だったりします。
>
msmを使えば解決する可能性があるのは、エラー2709 の部分だけです。
OCXを呼び出すと固まる。。。の部分が解決するかどうかは分かりませんよ。

引用返信 編集キー/
■73601 / inTopicNo.7)  Re[6]: VB6のインストーラ
□投稿者/ 魔界の仮面弁士 (149回)-(2014/10/15(Wed) 12:21:14)
No73600 (とっちゃん さん) に追記
> OCXを呼び出すと固まる。。。の部分が解決するかどうかは分かりませんよ。

コモンダイアログ限定ということのようなので、何かしらの Shell Extension が
悪さをしているの可能性もあるかもしれません(cymon.sys の古いバージョンとか)。
あるいはセキュリティソフトの類。


もしも Comdlg32.ocx の配置だけの問題なら、API (GetOpenFileName など)を
直接呼び出すようなラッパークラスを用意し、それを ocx がわりに
利用するようにしてみては如何でしょう。API 呼び出しでもフリーズを回避できない場合は
OCX の配布方法を模索したところで、問題を解決しない可能性が高そうです。
引用返信 編集キー/
■73604 / inTopicNo.8)  Re[7]: VB6のインストーラ
□投稿者/ さいとお (4回)-(2014/10/15(Wed) 19:04:31)
No73601 (魔界の仮面弁士 さん) に返信
> ■No73600 (とっちゃん さん) に追記
>>OCXを呼び出すと固まる。。。の部分が解決するかどうかは分かりませんよ。
>
> もしも Comdlg32.ocx の配置だけの問題なら、API (GetOpenFileName など)を
> 直接呼び出すようなラッパークラスを用意し、それを ocx がわりに
> 利用するようにしてみては如何でしょう。API 呼び出しでもフリーズを回避できない場合は
> OCX の配布方法を模索したところで、問題を解決しない可能性が高そうです。

いろいろと情報ありがとうございます。
OCXの配布方法を模索しても、問題を解決しない可能性が高いと判断しました。

Win7(64bit版)で試行した内容を列挙します。

1."KB2918614" を削除して、OSをリブートする。
2.Visual Studio Installer 1.1 で作成したインストーラで、 VB6アプリAをセットアップ。
  「ファイルを開く」コモンダイアログは正常に表示されたため、基本動作OKと判断した。
3.OSを終了する。このとき "KB2918614" がインストールされる。
4.OSを立ち上げなおし、Visual Studio 2008 で作成したインストーラで、VB6アプリBをセットアップ。
  OCXの登録は VB6アプリA で行われているはずなのに、コモンダイアログの呼び出しで固まる。
  (コモンダイアログが表示されない。10秒くらいでメッセージ「VB6アプリBは応答していません
   プログラムを閉じると、情報が失われる可能性があります。」が表示される。)
5.エクスプローラを使い、VB6アプリB の実行ファイル・設定ファイルなどを VB6アプリA の
  セットアップ先にコピーし、VB6アプリA のセットアップ先フォルダから VB6アプリB を起動する。
  「ファイルを開く」コモンダイアログは正常に表示された。

OCX の登録は VB6アプリA のセットアップで完了しているはずですから、セットアップ先の
VB6アプリB が「ファイルを開く」コモンダイアログを表示できないのは、別の理由があると
考えます。しかし、やるべき作業がわからないため、ギブアップになりそうです。


補足:
別の VB6アプリC では、「ファイルを開く」コモンダイアログを表示できず
表示した後にキャンセルボタンを押したような動作になっていました。
「表示しようとして固まる」か「表示できず、キャンセルボタンを押したような
動作になる」のは、VB6でのコモンダイアログの使い方依存みたいです。

引用返信 編集キー/
■73608 / inTopicNo.9)  Re[8]: VB6のインストーラ
□投稿者/ とっちゃん (262回)-(2014/10/16(Thu) 10:49:30)
とっちゃん さんの Web サイト
No73604 (さいとお さん) に返信

> 1."KB2918614" を削除して、OSをリブートする。
> 2.Visual Studio Installer 1.1 で作成したインストーラで、 VB6アプリAをセットアップ。
>   「ファイルを開く」コモンダイアログは正常に表示されたため、基本動作OKと判断した。
> 3.OSを終了する。このとき "KB2918614" がインストールされる。
> 4.OSを立ち上げなおし、Visual Studio 2008 で作成したインストーラで、VB6アプリBをセットアップ。
>   OCXの登録は VB6アプリA で行われているはずなのに、コモンダイアログの呼び出しで固まる。
>   (コモンダイアログが表示されない。10秒くらいでメッセージ「VB6アプリBは応答していません
>    プログラムを閉じると、情報が失われる可能性があります。」が表示される。)
> 5.エクスプローラを使い、VB6アプリB の実行ファイル・設定ファイルなどを VB6アプリA の
>   セットアップ先にコピーし、VB6アプリA のセットアップ先フォルダから VB6アプリB を起動する。
>   「ファイルを開く」コモンダイアログは正常に表示された。
>
4 で、そのまま VB6アプリAは起動するのでしょうか?
原因切り分けができていないように見受けられます。

まず、原因の切り分けとして、OCX の使い方あるいはOCXそのものの問題か
インストール方法等の問題かの切り分けが一つ必要です。

そのために行うことは、

1.KB2918614 がない状態でアプリAをインストールして、起動、コモンダイアログのオープンまでを確認。
2.再起動して KB2918614 が適用された状態で、「インストール済みの」アプリAを起動、コモンダイアログのオープンまでを確認。
3.アプリAをアンインストールして、改めてアプリAのインストールして、起動、コモンダイアログのオープンまでを確認。

の3パターンは最低でも必要です。

それと、10月のWindowsUpdateで、KB2918614 が更新されているらしいです。
インストールしようとするとエラーになる問題が修正されているらしいとのことですが
私自身が確認したわけではないので正直詳細は分かってません。



> 補足:
> 別の VB6アプリC では、「ファイルを開く」コモンダイアログを表示できず
> 表示した後にキャンセルボタンを押したような動作になっていました。
> 「表示しようとして固まる」か「表示できず、キャンセルボタンを押したような
> 動作になる」のは、VB6でのコモンダイアログの使い方依存みたいです。
>
表示できずキャンセルというのは、表示しないまま応答しなくなるということですか?
それとも、一瞬表示してすぐに画面が消えてしまうのでしょうか?

引用返信 編集キー/
■73609 / inTopicNo.10)  Re[9]: VB6のインストーラ
□投稿者/ さいとお (5回)-(2014/10/16(Thu) 11:53:09)
説明を端折ってしまい、混乱させてしまいました。申し訳ありません。

No73608 (とっちゃん さん) に返信
> ■No73604 (さいとお さん) に返信
>
>>1."KB2918614" を削除して、OSをリブートする。
>>2.Visual Studio Installer 1.1 で作成したインストーラで、 VB6アプリAをセットアップ。
>>  「ファイルを開く」コモンダイアログは正常に表示されたため、基本動作OKと判断した。
>>3.OSを終了する。このとき "KB2918614" がインストールされる。
>>4.OSを立ち上げなおし、Visual Studio 2008 で作成したインストーラで、VB6アプリBをセットアップ。
>>  OCXの登録は VB6アプリA で行われているはずなのに、コモンダイアログの呼び出しで固まる。
>>  (コモンダイアログが表示されない。10秒くらいでメッセージ「VB6アプリBは応答していません
>>   プログラムを閉じると、情報が失われる可能性があります。」が表示される。)
>>5.エクスプローラを使い、VB6アプリB の実行ファイル・設定ファイルなどを VB6アプリA の
>>  セットアップ先にコピーし、VB6アプリA のセットアップ先フォルダから VB6アプリB を起動する。
>>  「ファイルを開く」コモンダイアログは正常に表示された。
>>
> 4 で、そのまま VB6アプリAは起動するのでしょうか?

4の状態で、VB6アプリA は起動できますし「ファイルを開く」コモンダイアログも表示できます。

> そのために行うことは、
>
> 1.KB2918614 がない状態でアプリAをインストールして、起動、コモンダイアログのオープンまでを確認。
> 2.再起動して KB2918614 が適用された状態で、「インストール済みの」アプリAを起動、コモンダイアログのオープンまでを確認。
> 3.アプリAをアンインストールして、改めてアプリAのインストールして、起動、コモンダイアログのオープンまでを確認。
>
> の3パターンは最低でも必要です。

改めて確認して、結果を報告させていただきます。

> それと、10月のWindowsUpdateで、KB2918614 が更新されているらしいです。
> インストールしようとするとエラーになる問題が修正されているらしいとのことですが
> 私自身が確認したわけではないので正直詳細は分かってません。

情報ありがとうございます。しかしWindows7(64bit版)で確認する限り、"エラー 2709 オフライン
参加完了情報が見つかりませんでした。" が表示されインストールできない状況が続いています。

>>補足:
>>別の VB6アプリC では、「ファイルを開く」コモンダイアログを表示できず
>>表示した後にキャンセルボタンを押したような動作になっていました。
>>「表示しようとして固まる」か「表示できず、キャンセルボタンを押したような
>>動作になる」のは、VB6でのコモンダイアログの使い方依存みたいです。
>>
> 表示できずキャンセルというのは、表示しないまま応答しなくなるということですか?
> それとも、一瞬表示してすぐに画面が消えてしまうのでしょうか?

コモンダイアログの表示ができずエラーになる。「キャンセルボタンが押されたときのように、
エラー処理にジャンプしていた」ということです。後で、エラー情報を調べてみます。

引用返信 編集キー/
■73610 / inTopicNo.11)  Re[10]: VB6のインストーラ
□投稿者/ とっちゃん (263回)-(2014/10/16(Thu) 12:08:22)
とっちゃん さんの Web サイト
No73609 (さいとお さん) に返信
> 改めて確認して、結果を報告させていただきます。
>
状況を情報共有したほうがよいのであれば、ぜひ報告をお願いします。


>>それと、10月のWindowsUpdateで、KB2918614 が更新されているらしいです。
>>インストールしようとするとエラーになる問題が修正されているらしいとのことですが
>>私自身が確認したわけではないので正直詳細は分かってません。
>
> 情報ありがとうございます。しかしWindows7(64bit版)で確認する限り、"エラー 2709 オフライン
> 参加完了情報が見つかりませんでした。" が表示されインストールできない状況が続いています。
>
ということは、今回の件は別の問題なのかもしれませんね。
人づてに更新されたということを聞いただけなので。。。


> コモンダイアログの表示ができずエラーになる。「キャンセルボタンが押されたときのように、
> エラー処理にジャンプしていた」ということです。後で、エラー情報を調べてみます。
>
ダイアログの表示に失敗して、エラー終了したという形じゃないかと思います。
思うだけなので、正直よくわかりませんけど。。。



引用返信 編集キー/
■73611 / inTopicNo.12)  Re[11]: VB6のインストーラ
□投稿者/ さいとお (6回)-(2014/10/16(Thu) 18:52:53)
No73610 (とっちゃん さん) に返信
> ■No73609 (さいとお さん) に返信
>>コモンダイアログの表示ができずエラーになる。「キャンセルボタンが押されたときのように、
>>エラー処理にジャンプしていた」ということです。後で、エラー情報を調べてみます。
>>
> ダイアログの表示に失敗して、エラー終了したという形じゃないかと思います。
> 思うだけなので、正直よくわかりませんけど。。。

配列形式でないコモンダイアログであれば、正常に表示できました。

配列形式でコモンダイアログを定義したとき、コモンダイアログの表示で
エラーが発生していました。コモンダイアログを配列形式で定義したのは
一つのフォーム上に配置可能なコントロールの制限(256)があるためです。

とりあえず配列形式で宣言されたコモンダイアログを見直すことにします。
引用返信 編集キー/
■73615 / inTopicNo.13)  Re[12]: VB6のインストーラ
□投稿者/ さいとお (7回)-(2014/10/17(Fri) 14:30:34)
いろいろ確認したところ、セットアップファイルに加えていた OLEAUT32.dll OLEPRO32.dll が
影響して、コモンダイアログを表示できなかったことが分かりました。改めて、配列形式の
コモンコントロールの表示を確認したところ、正常に表示でき問題ありませんでした。

その後、改めてセットアップモジュールを作成し、基本動作に問題ないことを確認しました。
そのときの手順は次の通りです。

0.開発環境として、Windows 7(64bit版)で動作する 二つの "XP Mode" を使用した。
    Visual Studio 6.0 と Visual Studio Installer 1.1 をインストールした環境。
    Visual Studio 2008 と Visual Studio 6.0 をインストールした環境。
    (Visual Studio Installer 1.1 と Visual Studio 2008 は共存できないみたい)
  MSIファイルをインストールする確認環境は、Windows 7(64bit版)。

1.Visual Studio Installer 1.1 でセットアップモジュール(以下、MSIファイル)を作成する。
  (Visual Studio 6.0 と Visual Studio Installer をセットアップした XP Modeで作業)

2.Webからダウンロードしたマージモジュール(以下、MSMファイル)を、Visual Studio 2008 を
  セットアップした XP Mode の"C:\Program Files\Common Files\Merge Modules"にコピーする。
  そして手順1で作成したMSIファイルを解凍して内部のファイルを取り出す。

  マージモジュールの取得先 http://www.microsoft.com/ja-jp/download/details.aspx?id=5883

3.Visual Studio 2008 を起動しセットアップモジュールを作成する。
  指定するファイルは、手順2で取り出した内部ファイル全て。(ただしOLEAUT32.dll、OLEPRO32.dllを除く)

4.Windows の更新プログラム "KB2918614" を適用した Windows 7(64bit版)にて、手順1で作成した
  MSIファイルをインストールする。途中で "エラー 2709" が発生してインストールに失敗する。

5.その後、手順3で作成したMSIファイルをインストールする。正常にインストールできる。

6.インストールしたアプリケーションの基本動作を確認したところ、特に問題なし。
  コモンダイアログなども正常に表示できる。

最後になりますが、とっちゃんさん、魔界の仮面弁士さん、フォローありがとうございました。

解決済み
引用返信 編集キー/
■73617 / inTopicNo.14)  Re[13]: VB6のインストーラ
□投稿者/ とっちゃん (264回)-(2014/10/17(Fri) 16:42:48)
とっちゃん さんの Web サイト
No73615 (さいとお さん) に返信
> いろいろ確認したところ、セットアップファイルに加えていた OLEAUT32.dll OLEPRO32.dll が
> 影響して、コモンダイアログを表示できなかったことが分かりました。改めて、配列形式の
> コモンコントロールの表示を確認したところ、正常に表示でき問題ありませんでした。
>
現物を見てみないと判断できない部分もありますが、
多分手順1の時点でのインストーラの作り方に問題があると思われます。

手順2,3 でやってることを手順1で行い、なおかつ取り込むファイルは、自分で作ったもの「だけ」で
それ以外のものはすべてmsmを利用することで、解決するはずです。

一度それで実験してみることをお勧めします。
ただ、DLしてきたmsmが、VSIでは使えない可能性はあります。
考えられる個の可能性は1つだけで、msmの要求するインストーラのバージョンがmsi2.0であるのに対し
VSIが出力するインストーラのバージョンが 1.x という場合です。

この場合を除けば、わざわざ何度も作り直すような作業は必要ありません。

また、VSIでは作成できない場合も、最初から、手順3環境でビルドする(VS6があるため)か
手順1環境から出力ファイルを「ファイルコピー」して、インストーラをビルドすれば
解決すると思います。

一応解決済みとなっているので、マークはつけたままにしておきます。。。

解決済み
引用返信 編集キー/
■73619 / inTopicNo.15)  Re[14]: VB6のインストーラ
□投稿者/ さいとお (8回)-(2014/10/17(Fri) 20:38:48)
2014/10/17(Fri) 20:42:05 編集(投稿者)
2014/10/17(Fri) 20:41:55 編集(投稿者)

No73617 (とっちゃん さん) に返信
> ■No73615 (さいとお さん) に返信
>>いろいろ確認したところ、セットアップファイルに加えていた OLEAUT32.dll OLEPRO32.dll が
>>影響して、コモンダイアログを表示できなかったことが分かりました。改めて、配列形式の
>>コモンコントロールの表示を確認したところ、正常に表示でき問題ありませんでした。
>>
> 現物を見てみないと判断できない部分もありますが、
> 多分手順1の時点でのインストーラの作り方に問題があると思われます。

この部分は特別なことはしていません。VB6のディストリビューションウィザードがインストール
されていれば、VB6プロジェクトファイルを解析して必要なファイルをリストアップしてくれるので
その機能を利用することを考えました。

> 手順2,3 でやってることを手順1で行い、なおかつ取り込むファイルは、自分で作ったもの「だけ」で
> それ以外のものはすべてmsmを利用することで、解決するはずです。
> 一度それで実験してみることをお勧めします。
> ただ、DLしてきたmsmが、VSIでは使えない可能性はあります。

手順3でコモンダイアログなどのOCXを含む全ファイル(OLEAUT32.dll、OLEPRO32.dllも含む)を
選択すると、OCXはマージモジュールに置き換えてくれました。その後の確認(インストール操作、
アプリの実行)では、正常に動いています。目的は達成できたので、解決扱いとさせて頂きます。

ちなみに「自分で作ったものだけ」を選択すると、VS2008は依存関係を調べてくれないため、
マージモジュールの参照などができず必要なOCXを登録ができません。マージモジュールを
参照させる手順を試しながら作業していたため、本当に大丈夫か?と念を押されると弱気になって
しまいますが。(^-^;
解決済み
引用返信 編集キー/
■73628 / inTopicNo.16)  Re[15]: VB6のインストーラ
□投稿者/ とっちゃん (265回)-(2014/10/20(Mon) 14:48:45)
とっちゃん さんの Web サイト
No73619 (さいとお さん) に返信
> 手順3でコモンダイアログなどのOCXを含む全ファイル(OLEAUT32.dll、OLEPRO32.dllも含む)を
> 選択すると、OCXはマージモジュールに置き換えてくれました。その後の確認(インストール操作、
> アプリの実行)では、正常に動いています。目的は達成できたので、解決扱いとさせて頂きます。
>
この手順3の作業を手順1の最初の段階でできませんか?という意味で聞いたんですが...


> ちなみに「自分で作ったものだけ」を選択すると、VS2008は依存関係を調べてくれないため、
> マージモジュールの参照などができず必要なOCXを登録ができません。マージモジュールを
> 参照させる手順を試しながら作業していたため、本当に大丈夫か?と念を押されると弱気になって
> しまいますが。(^-^;

あるプログラムから、そのプログラムを実行せず、OCXを利用しているか?を確かめる確実な方法はありません。
そのため、「別途」これを使うという指定をすることで初めてセットアップに追加されます。

その作業方法の一つが、インストールしたいファイルを直接指定してしまう方法で
実際にさいとおさんが行った方法です。

こちらは、セットアップエディタがそういう方法に対応していることが重要になるため、できないツールも存在しますが
多くのGUI系のセットアップエディタが対応しています。

もう一つは、マージモジュールを指定する方法。
VS2008などのVSセットアップであれば、プロジェクトのコンテキストメニューに
「追加>マージモジュール」というメニューがあります。
そこで、マージモジュールを指定すれば、直接必要とするマージモジュールを
指定することができます。

こちらは原則として、追加したいコンポーネントがどのマージモジュールに含まれているかや
追加したいマージモジュールがわかっている場合に利用します。

どちらの追加方法でも問題はありませんが
Visual Studio Installer でも同じように追加できると思います。
これができれば手順1と手順3で同じインストーラを2種類作る必要がなくなりますよね?

という意味で書いたつもりだったので、前回のコメントだったんですが。
#いずれにせよ問題は解決済みということでチェックはつけておきます。

解決済み
引用返信 編集キー/
■73645 / inTopicNo.17)  Re[16]: VB6のインストーラ
□投稿者/ さいとお (9回)-(2014/10/21(Tue) 19:01:52)
No73628 (とっちゃん さん) に返信
> ■No73619 (さいとお さん) に返信
>>手順3でコモンダイアログなどのOCXを含む全ファイル(OLEAUT32.dll、OLEPRO32.dllも含む)を
>>選択すると、OCXはマージモジュールに置き換えてくれました。その後の確認(インストール操作、
>>アプリの実行)では、正常に動いています。目的は達成できたので、解決扱いとさせて頂きます。
>>
> この手順3の作業を手順1の最初の段階でできませんか?という意味で聞いたんですが...
 (中略)
> どちらの追加方法でも問題はありませんが
> Visual Studio Installer でも同じように追加できると思います。
> これができれば手順1と手順3で同じインストーラを2種類作る必要がなくなりますよね?

Visual Studio Installer でセットアッププロジェクトを作った場合、
次の環境でインストールできません。

  2014/08/11 に公開された Windows の更新プログラム(KB2918614) を
  適用した Windows Vista、Windows 7、Windows 8, Windows 8.1 にて、
  "エラー 2709 オフライン参加完了情報が見つかりませんでした。" が
  発生して VB6アプリ をインストールできません。

そのような環境でもセットアップ可能なインストーラを作るため、
Visual Studio 2008 でセットアッププロジェクトを作成したのです。
Visual Studio 2008 で作成したインストーラは、次の環境にインストールでき、
アプリの基本的な動作もOKでした。
  Net Frameworkを入れていないWindows XP(32bit)
  Windows の更新プログラム(KB2918614) を適用した Windows 7(64bit)

丁寧な解説、ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -