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

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

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

Re[8]: Installerについてお教え下さい。


(過去ログ 98 を表示中)

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

■58857 / inTopicNo.1)  Installerについてお教え下さい。
  
□投稿者/ mine (3回)-(2011/04/29(Fri) 11:16:58)

分類:[インストーラ全般] 

VisualStudio2005(VB)でプログラム(ProgA)を作成し追加プロジェクトでセットアッププロジェクトを作成しました。
ProgAはVB6で作成しているプログラム(ProgB)で使用しているのと同じOCXを使用しています。
VB6ではOCXをWindows\system32に共用としてInstallしています。
またProgAのセットアッププロジェクトではOCXをWinddows\system32にShardedRegacyFile=True、System=TrueとしてSetupしています。
ProgAのセットアッププロジェクトでInstallを行いますと問題なくInstallされプログラムの実行も問題ないのですが、UninstallしますとOCXが登録解除されてしまいます。
どの様にすれば共用のOCXがUninstallで登録解除されないように出来るのでしょうか?
何分初心者でInternetでも調べてみましたが良くわかりません。 何方か是非お教え頂きたくお願い申し上げます。
またWindowsInstallerのことを判りやすく且つ詳しく解説して本などご存じでしたらお教え下さい。
引用返信 編集キー/
■58859 / inTopicNo.2)  Re[1]: Installerについてお教え下さい。
□投稿者/ とっちゃん (573回)-(2011/04/29(Fri) 15:28:58)
とっちゃん さんの Web サイト
No58857 (mine さん) に返信
> VisualStudio2005(VB)でプログラム(ProgA)を作成し追加プロジェクトでセットアッププロジェクトを作成しました。
> ProgAはVB6で作成しているプログラム(ProgB)で使用しているのと同じOCXを使用しています。
> VB6ではOCXをWindows\system32に共用としてInstallしています。
> またProgAのセットアッププロジェクトではOCXをWinddows\system32にShardedRegacyFile=True、System=TrueとしてSetupしています。
> ProgAのセットアッププロジェクトでInstallを行いますと問題なくInstallされプログラムの実行も問題ないのですが、UninstallしますとOCXが登録解除されてしまいます。
> どの様にすれば共用のOCXがUninstallで登録解除されないように出来るのでしょうか?
ざっと見たところでは、問題なさそうですね。
とすると、登録がらみかな?どういう設定で登録していますか?
ちょっと手元に参考にできるプロジェクトがないので忘れちゃいましたが。。。
OCXのファイルのプロパティに登録に関する設定項目があります(セットアッププロジェクトのほうです)。

そのパターンを変えて試してみてください(登録しないというのもあるのでそれはやらないようにしないとダメ)。
もしそのOCXが自家製ではなく、どこかから入手してきたもの(ComCtl32.ocxとか)ならそのOCX用の
マージモジュールがあるかもしれませんので、開発元に問い合わせ、あったらそれを使うようにしてください。
そうすれば何も考えずに利用できます。




> 何分初心者でInternetでも調べてみましたが良くわかりません。 何方か是非お教え頂きたくお願い申し上げます。
正直、キーワードがわかっていても、ネットでヒットする率は低いです。
なにせ、検索がヒットする条件の最低条件にあたる情報が存在すること。。。が成立してませんからねw

> またWindowsInstallerのことを判りやすく且つ詳しく解説して本などご存じでしたらお教え下さい。
日本語。。。ですよね?まとまった参考資料としてはInstallShieldの書籍(私のブログに貼ってあります)くらいかな。
WindowsInstaller なインストーラパッケージを作成するのならどういうツールを使うかにかかわりなく
持っておくべき一冊。これ以外に資料ないしなにより、MSDNより説明が詳しいしw

InstallShield持ってないとわからないことや、VSセットアップではできないこともいっぱいありますが
将来他のインストーラ作成ツールに移行するとき(VS2010の次からVSセットアップはなくなります)に
この書籍に載っている情報は少なからず役に立つと思います。

引用返信 編集キー/
■58860 / inTopicNo.3)  Re[2]: Installerについてお教え下さい。
□投稿者/ mine (4回)-(2011/04/29(Fri) 18:23:23)
No58859 (とっちゃん さん) に返信

とっちゃん さん 早速にご指導有り難う御座います。
>>どの様にすれば共用のOCXがUninstallで登録解除されないように出来るのでしょうか?
> ざっと見たところでは、問題なさそうですね。
> とすると、登録がらみかな?どういう設定で登録していますか?
> ちょっと手元に参考にできるプロジェクトがないので忘れちゃいましたが。。。
> OCXのファイルのプロパティに登録に関する設定項目があります(セットアッププロジェクトのほうです)。
> そのパターンを変えて試してみてください(登録しないというのもあるのでそれはやらないようにしないとダメ)。

現在使用しているOCXはあるメーカーの物でVB6のプログラムではInstallShield for VC+++6.0でInstallerを作成していました。
OCXはSReg System FilesとしてWindows\System32に共有:はい、セルフジストリング:はい、ロックファイル:はい、圧縮:はい、で登録しています。
.net用のセットアッププログラムではApplicationFolderに***.exeを追加すると自動的にOCX関連のfailも追加されます。OCXを***.OCXとするとAxInterroo.***DllとInterop.***dllも自動で追加されるのですがAxInterroo.***DllとInterop.***dllはどの様な物なのでしょうか?
この3つのFileをすべてShardeRegacyFile=True, System=TrueにしてInstallerを作成してもやはりUninstallでOCXが登録解除になってしまいます。このためこれら3つのFileをすべて削除してWindows\System32に***.OCXのみを追加した結果がやはりダメなのです。
なおこの時の***.ocxのPropertyはEclude:False,Foder:system32,Hidden:False, PackageAS: vsdpaDefault, Permanetnt:False, ReadOnly:False, Regiser:vsdrfCOMSelfReg, SharedLegacyFile:True, System:True, Trasitive:False, Vital:Trueとしています。
どの項目を変更する必要があるのでしょうか?

> もしそのOCXが自家製ではなく、どこかから入手してきたもの(ComCtl32.ocxとか)ならそのOCX用の
> マージモジュールがあるかもしれませんので、開発元に問い合わせ、あったらそれを使うようにしてください。
> そうすれば何も考えずに利用できます。

VB6では***.OCX以外何も必要としていません。

>>またWindowsInstallerのことを判りやすく且つ詳しく解説して本などご存じでしたらお教え下さい。
> 日本語。。。ですよね?まとまった参考資料としてはInstallShieldの書籍(私のブログに貼ってあります)くらいかな。
> WindowsInstaller なインストーラパッケージを作成するのならどういうツールを使うかにかかわりなく
> 持っておくべき一冊。これ以外に資料ないしなにより、MSDNより説明が詳しいしw
>
> InstallShield持ってないとわからないことや、VSセットアップではできないこともいっぱいありますが
> 将来他のインストーラ作成ツールに移行するとき(VS2010の次からVSセットアップはなくなります)に
> この書籍に載っている情報は少なからず役に立つと思います。

先に書きましたようにInstallShield for VC+++6.0の同名の参考書を何回も読んで一応使用出来るようになっています。

宜しくご指導お願い申し上げます。
引用返信 編集キー/
■58861 / inTopicNo.4)  Re[3]: Installerについてお教え下さい。
□投稿者/ とっちゃん (574回)-(2011/04/29(Fri) 20:30:22)
とっちゃん さんの Web サイト
No58860 (mine さん) に返信

前後しますが...本のところだけ

>
> 先に書きましたようにInstallShield for VC+++6.0の同名の参考書を何回も読んで一応使用出来るようになっています。
現在の InstallShield(およびVS2010の追加パッケージにあたるInstallShield LimitedEdition)は、名前こそ InstallShield ですがVC6についていたものとは全く別の製品です。
当時の知識が役立たずであるというわけではありませんが、異なる部分が多々あり、作成ツールの違いとは全く別の部分で異なっています。
なので、当時とは異なる様々な部分を新たな知識として増やしていく必要があります。

本そのものはそれほど厚いものではありません(1.5センチない程度)。お値段もそれほど高くはありません。が、入手性は非常に困難を極める可能性があります。ネットワールドに直接問い合わせればまだ入手できる気はしますが。。。どうだろう?



> 現在使用しているOCXはあるメーカーの物でVB6のプログラムではInstallShield for VC+++6.0でInstallerを作成していました。
> OCXはSReg System FilesとしてWindows\System32に共有:はい、セルフジストリング:はい、ロックファイル:はい、圧縮:はい、で登録しています。
> .net用のセットアッププログラムではApplicationFolderに***.exeを追加すると自動的にOCX関連のfailも追加されます。OCXを***.OCXとするとAxInterroo.***DllとInterop.***dllも自動で追加されるのですがAxInterroo.***DllとInterop.***dllはどの様な物なのでしょうか?

AxInterop.* と、Interop.* は、COM相互運用機能と呼ばれる、.NET Framework から COM コンポーネント(OCXもCOMです)を呼び出すためのラッパーモジュールとなっています。これら2つは(ものによっては1つの場合もあります)OCXのように登録するものではなく、利用する(COMを参照した)EXE(やDLL)と同じフォルダに配置します。

ですので、OCXとは別扱いしてください。


> なおこの時の***.ocxのPropertyは<<省略>>
SharedLegacy は、従来の共有と同じものなので、True で問題ないですね。すでにインストールされていればこのフラグが働いて登録解除されないはずなんですが...
System は、ファイルがシステムコンポーネントではないのでFalseでいいはずです。影響しない気はしますが...
あとは、Register 部分か。自己登録は、VSセットアップで変更されています。
この部分は、COMSelfReg(今セットしているもの)か、COM のどちらかで設定します。
ファイルが残っていて登録が解除されているというところからするとここをCOMにすればいいのかもしれません。もし、それでだめなら、VSセットアップの制限事項になるので、別途COMの吸い上げに完全対応できるWiXか、InstallShield(Pro)で、マージモジュールを作らないと対応できないと思います。


>>もしそのOCXが自家製ではなく、どこかから入手してきたもの(ComCtl32.ocxとか)ならそのOCX用の
>>マージモジュールがあるかもしれませんので、開発元に問い合わせ、あったらそれを使うようにしてください。
>>そうすれば何も考えずに利用できます。
>
> VB6では***.OCX以外何も必要としていません。
>
マージモジュールは、VSセットアップ(WindowsInstaller)で新たに作られたインストーラ用のライブラリです。VBがOCXで決まった機能を拡張できるように、インストーラでOCXを誰もが間違いなくインストールできるように設定情報などを全部パッケージングしたものとなります。

現在もサポートを行っており、なおかつ、ランタイムの配布についてそれなりにドキュメンテーションを用意していたメーカーなら...ですけど、かなり微妙かも...

引用返信 編集キー/
■58863 / inTopicNo.5)  Re[4]: Installerについてお教え下さい。
□投稿者/ mine (5回)-(2011/04/30(Sat) 09:02:56)
No58861 (とっちゃん さん) に返信
> 本そのものはそれほど厚いものではありません(1.5センチない程度)。お値段もそれほど高くはありません。が、入手性は非常に困難を極める可能性があります。ネットワールドに直接問い合わせればまだ入手できる気はしますが。。。どうだろう?
NewworldのInstallShiield公認ガイドブックでしたら購入して在ります。 ただしまだあまりよく読んでいませんでしたが読み直してみます。。

ProgAをInstallした後に***.ocxのCLSIDを調べてみましたらProgAのTargetDirにある***.ocxに成っていました。 SetUpProjectでApplicationFolderにあった***.ocx関係の3つのFileを切り取ったのですが表示は残ったままでした。 しかしアイコンなどが変化したので削除出来たと思っていたのですが削除されていなかったようです。
***.exeの依存関係にあるFileはApplicationFolder以外には配置出来ないのでしょうか?
度々ですが宜しくご指導下さい。
引用返信 編集キー/
■58865 / inTopicNo.6)  Re[5]: Installerについてお教え下さい。
□投稿者/ とっちゃん (575回)-(2011/04/30(Sat) 11:48:35)
とっちゃん さんの Web サイト
No58863 (mine さん) に返信
> ■No58861 (とっちゃん さん) に返信
>>本そのものはそれほど厚いものではありません(1.5センチない程度)。お値段もそれほど高くはありません。が、入手性は非常に困難を極める可能性があります。ネットワールドに直接問い合わせればまだ入手できる気はしますが。。。どうだろう?
> NewworldのInstallShiield公認ガイドブックでしたら購入して在ります。 ただしまだあまりよく読んでいませんでしたが読み直してみます。。
>
× Newworld ○ Networld

> ProgAをInstallした後に***.ocxのCLSIDを調べてみましたらProgAのTargetDirにある***.ocxに成っていました。 SetUpProjectでApplicationFolderにあった***.ocx関係の3つのFileを切り取ったのですが表示は残ったままでした。 しかしアイコンなどが変化したので削除出来たと思っていたのですが削除されていなかったようです。
> ***.exeの依存関係にあるFileはApplicationFolder以外には配置出来ないのでしょうか?
> 度々ですが宜しくご指導下さい。

依存関係で自動取り込みしたものは、全部同じフォルダにセットアップされます(変更不可)。

ですので、依存関係でリストアップしたもので、OCXや、別の製品のモジュール(Officeの参照などを行うと組み込まれることがある)は
依存関係から除外して(依存関係リストのコンテキストメニューから外すことができたはず)、
別途、フォルダを用意してそこにファイルを追加する形でインストールします。

ちょっと面倒ですが、もともと難しいことを考えないでいいようにという設計思想で作っている(VSセットアップの先祖はVBディストリビューションウィザードです)ので
どうにもならない部分とあきらめてください。

引用返信 編集キー/
■58868 / inTopicNo.7)  Re[6]: Installerについてお教え下さい。
□投稿者/ mine (6回)-(2011/04/30(Sat) 13:02:26)
No58865 (とっちゃん さん) に返信

とっちゃん さん 度々のご指導有り難う御座います。
> 依存関係で自動取り込みしたものは、全部同じフォルダにセットアップされます(変更不可)。
> ですので、依存関係でリストアップしたもので、OCXや、別の製品のモジュール(Officeの参照などを行うと組み込まれることがある)は
> 依存関係から除外して(依存関係リストのコンテキストメニューから外すことができたはず)、
> 別途、フォルダを用意してそこにファイルを追加する形でインストールします。
ご指導に従い依存関係リストのコンテキストメニューから***.OCXを削除し、ファイルシステムにシステムフォルダーを新たに作りここに
***.OCXを配置してInsatllerを作成し、Install,Uninstallを行いましたがお陰で問題ないようです。(Registryで確認致しました)
依存関係リストから***.OCXを削除するという発想が在りませんでした。
ただシステムフォルダーに***.OCXを配置するとAxInterop***.dll と、Interop***.dll は作成されませんが問題ないのでしょうか?
重ねてご指導をお願い申し上げます。よろしく。
引用返信 編集キー/
■58869 / inTopicNo.8)  Re[7]: Installerについてお教え下さい。
□投稿者/ とっちゃん (577回)-(2011/04/30(Sat) 13:27:35)
とっちゃん さんの Web サイト
No58868 (mine さん) に返信

> 依存関係リストから***.OCXを削除するという発想が在りませんでした。
知らないとわからんですからね。仕方ないと思います。

> ただシステムフォルダーに***.OCXを配置するとAxInterop***.dll と、Interop***.dll は作成されませんが問題ないのでしょうか?
こちらは、EXEと同じフォルダにインストールしてください。依存関係に上がっていればそのままで構いません。
もしかしたらプロジェクトの出力で入っているかもしれませんが。。。

これら二つの詳細については、「COM相互運用」という.NET Framework のテクノロジについて学んでください。
掲示板でサクッと解説できるようなものじゃないので。

引用返信 編集キー/
■58871 / inTopicNo.9)  Re[8]: Installerについてお教え下さい。
□投稿者/ mine (7回)-(2011/04/30(Sat) 20:57:34)
No58869 (とっちゃん さん) に返信
とっちゃん さん 度々のご指導有り難う御座います。
>>依存関係リストから***.OCXを削除するという発想が在りませんでした。
> 知らないとわからんですからね。仕方ないと思います。
>
>>ただシステムフォルダーに***.OCXを配置するとAxInterop***.dll と、Interop***.dll は作成されませんが問題ないのでしょうか?
> こちらは、EXEと同じフォルダにインストールしてください。依存関係に上がっていればそのままで構いません。
> もしかしたらプロジェクトの出力で入っているかもしれませんが。。。
>
> これら二つの詳細については、「COM相互運用」という.NET Framework のテクノロジについて学んでください。
> 掲示板でサクッと解説できるようなものじゃないので。

AxInterop***.dll と、Interop***.dllはAplicationFolderに自動作成されていました。CheckMissでした。
お陰で完全解決です。
重ねてご指導に御礼申し上げます。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -