トップ回答者
システム(64ビット)フォルダはSysWow64ですか?

質問
-
VS2005でセットアッププロジェクトを作成しています。
インストールしたいアプリは32bitでインストール先は64bitOSです
この場合、32bitのDLLをSysWow64に入れるのはわかったのですが
セットアッププロジェクトの作成時に対象OSを64bitとして
ファイルの種類でシステムフォルダを設定するときに
システム(64ビット)フォルダは
64bitOSの中のSystem32を指すのか
SysWow64を指すのか教えていただけますか?
どこかでシステムフォルダを選択すると
そのOSの基本システムフォルダを指すように
書かれていたので迷ってきました。
よろしくお願いします
- 編集済み ヒマジロウ 2012年8月23日 2:43
回答
-
いろいろと質問される前に 64bit Windows における 32bit Application の挙動についてきちんと勉強してください。
http://msdn.microsoft.com/ja-jp/library/aa384187(v=vs.85) など。
// 個人的には、32bit Application のインストールに 64bit Installer を作る理由がわかりませんが…。
ここからリンクでたどれる先もいろいろと見てください。- 編集済み AzuleanMVP, Moderator 2012年8月23日 13:03
- 回答の候補に設定 山本春海 2012年8月24日 5:14
- 回答としてマーク 山本春海 2012年8月27日 7:45
-
64bitOSのシステムファイルを参照したいので
どちらのシステムフォルダを選択するのかを知りたかったのです。なぜですか?
先に書かれているような、32bit Application 向けの共通コンポーネントのインストールのためなら、64bit Process 向けのシステムフォルダーを知る必要はないかと思いますが…。
64bit Windows が登場する前の 32bit Application の Installer は、64bit Windows のシステムフォルダーを知りませんよね?それでも、ある程度問題なく動くように設計されていますよ。
その辺は環境変数なり、取得されるフォルダーなりが工夫されているわけです。何も考えずに 32bit Installer を作れば、64bit Windows では 32bit Application 向けのシステムフォルダーが取得されるはずです。
- 編集済み AzuleanMVP, Moderator 2012年8月23日 21:43
- 回答の候補に設定 山本春海 2012年8月24日 5:14
- 回答としてマーク 山本春海 2012年8月27日 7:45
-
もしかしてVS2005で作成したアプリがAny CPUになっていて、32bit OS上では32bitアプリとして、64bit OS上では64bitアプリとして動作していたりしませんよね? その場合、VB6.0のDLLは32bit DLLなので、64bitアプリからは読み込むことができません。
この仮定通りの場合の解決策は、Any CPUではなく明示的に32bitにすることです。こうすることで64bit OS上でも32bitアプリとして動作し、VB6.0の32bit DLLを読み込むことができるようになります。また当然のことながら、インストーラーも32bitアプリで実装する必要があります。
-
先に書かれているような、32bit Application 向けの共通コンポーネントのインストールのためなら、64bit Process 向けのシステムフォルダーを知る必要はないかと思いますが…。
何も考えずに 32bit Installer を作れば、64bit Windows では 32bit Application 向けのシステムフォルダーが取得されるはずです。
おはようございます。
返信、ありがとうございます。
理解できたように思います。
64bitOS上だから32bitアプリ独自で必要なものは
32Bitフォルダだけど他の共通システムとしては
64Bitフォルダのファイルを参照すると思ってました。
ありがとうございました
- 回答としてマーク ヒマジロウ 2012年8月24日 1:42
-
もしかしてVS2005で作成したアプリがAny CPUになっていて、32bit OS上では32bitアプリとして、64bit OS上では64bitアプリとして動作していたりしませんよね? その場合、VB6.0のDLLは32bit DLLなので、64bitアプリからは読み込むことができません。
この仮定通りの場合の解決策は、Any CPUではなく明示的に32bitにすることです。こうすることで64bit OS上でも32bitアプリとして動作し、VB6.0の32bit DLLを読み込むことができるようになります。また当然のことながら、インストーラーも32bitアプリで実装する必要があります。
おはようございます。
返信、ありがとうございます。
アプリはVB6で作成しているので32bitです。
セットアッププロジェクトの構成マネージャーのプラットフォームはDefaultになっていて変更できません。
プロパティのターゲットプラットフォームはx86にしています。
すこしづつでも勉強して理解していきます。
お手数をおかけしてすみませんでした。
ありがとうございました。
- 回答としてマーク ヒマジロウ 2012年8月24日 1:42
すべての返信
-
返信、ありがとうございます。
先の質問に追記です。
インストールしたいEXEはVB6.0で開発しコンパイルしたものです。
システムファイルをシステムフォルダ以外からどう参照するかは
別途考えてみます。
で、掲題の件ですが
既存のシステムファイルを参照する場合において
64bitOSにインストールする場合には
セットアッププロジェクトにおける
システムフォルダ(64ビット)は¥Windows¥SYSTEM32を指し
(また、システムフォルダ=SysWow64?は32bitDllを参照する場合)でよいですか?
- 編集済み ヒマジロウ 2012年8月23日 7:54
-
いろいろと質問される前に 64bit Windows における 32bit Application の挙動についてきちんと勉強してください。
http://msdn.microsoft.com/ja-jp/library/aa384187(v=vs.85) など。
// 個人的には、32bit Application のインストールに 64bit Installer を作る理由がわかりませんが…。
ここからリンクでたどれる先もいろいろと見てください。- 編集済み AzuleanMVP, Moderator 2012年8月23日 13:03
- 回答の候補に設定 山本春海 2012年8月24日 5:14
- 回答としてマーク 山本春海 2012年8月27日 7:45
-
いろいろと質問される前に 64bit Windows における 32bit Application の挙動についてきちんと勉強してください。
http://msdn.microsoft.com/ja-jp/library/aa384187(v=vs.85) など。
// 個人的には、32bit Application のインストールに 64bit Installer を作る理由がわかりませんが…。
ここからリンクでたどれる先もいろいろと見てください。返信、ありがとうございます。
ご指摘の通り、勉強不足は十分に痛感しております。
また説明不足も申し訳ありません
>// 個人的には、32bit Application のインストールに 64bit Installer を作る理由がわかりませんが…。
64bitインストーラーを作りたいのではなく
64bitOSのシステムファイルを参照したいので
どちらのシステムフォルダを選択するのかを知りたかったのです。
参考サイトを見るをみて再度勉強します
ありがとうございました
-
64bitOSのシステムファイルを参照したいので
どちらのシステムフォルダを選択するのかを知りたかったのです。なぜですか?
先に書かれているような、32bit Application 向けの共通コンポーネントのインストールのためなら、64bit Process 向けのシステムフォルダーを知る必要はないかと思いますが…。
64bit Windows が登場する前の 32bit Application の Installer は、64bit Windows のシステムフォルダーを知りませんよね?それでも、ある程度問題なく動くように設計されていますよ。
その辺は環境変数なり、取得されるフォルダーなりが工夫されているわけです。何も考えずに 32bit Installer を作れば、64bit Windows では 32bit Application 向けのシステムフォルダーが取得されるはずです。
- 編集済み AzuleanMVP, Moderator 2012年8月23日 21:43
- 回答の候補に設定 山本春海 2012年8月24日 5:14
- 回答としてマーク 山本春海 2012年8月27日 7:45
-
もしかしてVS2005で作成したアプリがAny CPUになっていて、32bit OS上では32bitアプリとして、64bit OS上では64bitアプリとして動作していたりしませんよね? その場合、VB6.0のDLLは32bit DLLなので、64bitアプリからは読み込むことができません。
この仮定通りの場合の解決策は、Any CPUではなく明示的に32bitにすることです。こうすることで64bit OS上でも32bitアプリとして動作し、VB6.0の32bit DLLを読み込むことができるようになります。また当然のことながら、インストーラーも32bitアプリで実装する必要があります。
-
先に書かれているような、32bit Application 向けの共通コンポーネントのインストールのためなら、64bit Process 向けのシステムフォルダーを知る必要はないかと思いますが…。
何も考えずに 32bit Installer を作れば、64bit Windows では 32bit Application 向けのシステムフォルダーが取得されるはずです。
おはようございます。
返信、ありがとうございます。
理解できたように思います。
64bitOS上だから32bitアプリ独自で必要なものは
32Bitフォルダだけど他の共通システムとしては
64Bitフォルダのファイルを参照すると思ってました。
ありがとうございました
- 回答としてマーク ヒマジロウ 2012年8月24日 1:42
-
もしかしてVS2005で作成したアプリがAny CPUになっていて、32bit OS上では32bitアプリとして、64bit OS上では64bitアプリとして動作していたりしませんよね? その場合、VB6.0のDLLは32bit DLLなので、64bitアプリからは読み込むことができません。
この仮定通りの場合の解決策は、Any CPUではなく明示的に32bitにすることです。こうすることで64bit OS上でも32bitアプリとして動作し、VB6.0の32bit DLLを読み込むことができるようになります。また当然のことながら、インストーラーも32bitアプリで実装する必要があります。
おはようございます。
返信、ありがとうございます。
アプリはVB6で作成しているので32bitです。
セットアッププロジェクトの構成マネージャーのプラットフォームはDefaultになっていて変更できません。
プロパティのターゲットプラットフォームはx86にしています。
すこしづつでも勉強して理解していきます。
お手数をおかけしてすみませんでした。
ありがとうございました。
- 回答としてマーク ヒマジロウ 2012年8月24日 1:42