DOBON.NET DOBON.NETプログラミング掲示板過去ログ

AxWindowsMediaPlayerの動作必須環境

環境/言語:[Windows XP SP2 VB.NET 2002]
分類:[.NET]

AxWindowsMediaPlayerを使用したアプリケーションを作って配布する場合、動作必須環境はあるのでしょうか。
WindowsMediaPlayer9のみ搭載の機能を使用したアプリケーションを作り、
WindowsMediaPlayer8がインストールされている環境で実行してみましたが、
WindowsMediaPlayer8がエラーで使用できなくなるだけでアプリケーションは正しく動作しました。
他に、
「バージョンいくつ以上のDirectXが必要」
「WindowsMediaPlayer7以降がインストールされていることが必要」
など、必要な環境はあるのでしょうか。
他サイトのVB関連の掲示板でも同じ質問をしたのですが、
まったく返信がなかったのでこちらで質問させていただきました。
(.NETがあまり普及していないからなのか、私の質問が特殊なのか・・・)
■No6834に返信(UMUさんの記事)
> AxWindowsMediaPlayerを使用したアプリケーションを作って配布する場合、
> 動作必須環境はあるのでしょうか。
>
> 他に、
> 「バージョンいくつ以上のDirectXが必要」
> 「WindowsMediaPlayer7以降がインストールされていることが必要」
> など、必要な環境はあるのでしょうか。

使用したコンポーネントがインストールされている環境が
必須環境となります。
下位バージョンでもサポートされている機能のみを使っている場合は、
そのバージョン以上が必須環境となるでしょう。
いずれにしても、動作させてみるのが一番確実かと。


> WindowsMediaPlayer9のみ搭載の機能を使用したアプリケーションを作り、
> WindowsMediaPlayer8がインストールされている環境で実行してみましたが、
> WindowsMediaPlayer8がエラーで使用できなくなるだけでアプリケーションは正しく動作しました。

エラーで使用できなくなるという時点で、
アプリが正しく動作しているとは言えないのでは?
> 使用したコンポーネントがインストールされている環境が
> 必須環境となります。
> 下位バージョンでもサポートされている機能のみを使っている場合は、
> そのバージョン以上が必須環境となるでしょう。
> いずれにしても、動作させてみるのが一番確実かと。

使用したコンポーネントがインストールされていない環境でも正常動作しています。
WindowsMediaPlayer8しかインストールされていない環境というのがそれです。
作成したアプリケーションはWindowsMediaPlayer9のみサポートしている機能を使用しています。
作成したアプリケーションの動作にはAxWindowsMediaPlayerのDLLを使用するため、
WindowsMediaPlayer9がインストールされている環境で作成されたのなら
一応動作するようなのですが・・・(自分が試した他の環境ではすべて)
もちろん、そのDLLはアプリケーションインストール時に
アプリケーションフォルダ内にインストールしておきます。

> エラーで使用できなくなるという時点で、
> アプリが正しく動作しているとは言えないのでは?

アプリケーションは正常動作しています。
WindowsMediaPlayer8を単体で起動するとエラーが出るというだけで、
AxWindowsMediaPlayerはWindowsMediaPlayer9のDLLを使用しているので動作します。
おそらく、アプリケーションのインストール時に、
WindowsMediaPlayer8のDLLの一部が9に書き換わってしまうために起こっているのだと思いますが・・・

あまり古い環境がないのでこれ以上試せないのですが、
Windows 98SEやMEでWindowsMediaPlayerをバージョンアップしていない状態でも使用できるのか、
DirectXは関係あるのかなど、分からないでしょうか。
■No6877に返信(UMUさんの記事)
> 作成したアプリケーションの動作にはAxWindowsMediaPlayerのDLLを使用するため、
> WindowsMediaPlayer9がインストールされている環境で作成されたのなら
> 一応動作するようなのですが・・・(自分が試した他の環境ではすべて)
> もちろん、そのDLLはアプリケーションインストール時に
> アプリケーションフォルダ内にインストールしておきます。

アプリケーションインストール時に、使用するDLLがアプリケーションフォルダに
インストールされるのであれば、どの環境でも動作します。
強いて言えば、.NET Framework がインストールされている環境が
必須動作環境となります。

> 使用したコンポーネントがインストールされている環境が
> 必須環境となります。
という私の先ほどのレスは、アプリケーションのみインストールを行い、
アプリが使用しているDLLはインストールしないという前提でこう書きました。


> アプリケーションは正常動作しています。
> WindowsMediaPlayer8を単体で起動するとエラーが出るというだけで、
> AxWindowsMediaPlayerはWindowsMediaPlayer9のDLLを使用しているので動作します。
> おそらく、アプリケーションのインストール時に、
> WindowsMediaPlayer8のDLLの一部が9に書き換わってしまうために起こっているのだと思いますが・・・
>
> あまり古い環境がないのでこれ以上試せないのですが、
> Windows 98SEやMEでWindowsMediaPlayerをバージョンアップしていない状態でも使用できるのか、
> DirectXは関係あるのかなど、分からないでしょうか。

質問の意味を正確に捉えていませんでした。
失礼致しました。

まず、他に必要なものがあるのかどうか、についてですが、
.NET Framework では、DLL Hellを解決するために、
そのアプリで使用するDLLを自アプリと同じフォルダに格納する
Side-By-Side 配置という方法を取ることができます。

実際、開発環境のBinフォルダには、AxWindowsMediaPlayerのDLLが
自動的にコピーされてきているはずです。
実行に必要となるEXE及びDLLはBinフォルダ以下のがすべてとなります。
もちろん .NET Framework そのものがインストールされていることが前提となりますが。

また、上記のSide-By-Side 配置という手法の根底にある
"プライベート DLL"という考え方から、
単純にコピーのみを行うインストールでは、
WindowsMediaPlayer8のDLLの一部が9に書き換わるということはないはずです。

実際、WindowsMediaPlayer8のみインストールされている環境で、
WindowsMediaPlayer9のDLLを使用したアプリを作成し、
コピーインストールにてインストール後、実行しましたが、
作成したアプリ、WindowsMediaPlayer8ともに正常動作した記憶があります。
> アプリケーションインストール時に、使用するDLLがアプリケーションフォルダに
> インストールされるのであれば、どの環境でも動作します。

特に動作必須環境はないということですね。
ただ、WindowsMediaPlayer9の動作必須環境はWindows 98SE以降ですので、
Windows 95は.NET Framework自体動作しませんが、
.NET Frameworkが動作するWindows 98やNT4.0ではどうなのでしょう。

> また、上記のSide-By-Side 配置という手法の根底にある
> "プライベート DLL"という考え方から、
> 単純にコピーのみを行うインストールでは、
> WindowsMediaPlayer8のDLLの一部が9に書き換わるということはないはずです。
>
> 実際、WindowsMediaPlayer8のみインストールされている環境で、
> WindowsMediaPlayer9のDLLを使用したアプリを作成し、
> コピーインストールにてインストール後、実行しましたが、
> 作成したアプリ、WindowsMediaPlayer8ともに正常動作した記憶があります。

インストーラではbinフォルダ内のファイルをすべてコピーするようにしているだけなのですが、
なぜかWindowsMediaPlayer8が起動できなくなったり、
WindowsMediaPlayer9がインストールされている環境でも
アンインストールするとビデオを再生できなくなったりします。(音声のみ)
再びアプリケーションをインストールするとなぜか直ります。
VB.NET2002のバグくさいような気もするのですが、何かやり方が違うのでしょうか。
VB.NET2003では私が発見した他のバグもいろいろと修正されていると聞いたので、
VB.NET2003では起こらないのかもしれません。

binフォルダの中には3つのDLLができていました。
 AxInterop.WMPLib.DLL
 Interop.WMPLib.DLL
 wmp.dll
すべてインストール時にアプリケーションフォルダ内にコピーするようにしているのですが、
もしかしてwmp.dll以外必要なかったりします?
もしそうだとしても、やはりアプリケーションフォルダ内にコピーしただけで
WindowsMediaPlayerが壊れるのは変ですよね。
仕事が忙しくて掲示板が見れない日々が・・・・
レスが遅くなりまして申し訳ありません。

> 特に動作必須環境はないということですね。
> ただ、WindowsMediaPlayer9の動作必須環境はWindows 98SE以降ですので、
> Windows 95は.NET Framework自体動作しませんが、
> .NET Frameworkが動作するWindows 98やNT4.0ではどうなのでしょう。

使用しているすべてのコンポーネントの動作必須環境を満たしていれば、OKです。
上記の場合、Win98SE以降が動作必須となります。
NT4.0は対象外となるのではないでしょうか。
DirectX9はWin98以降が対応ですが、Win3.1, 95, NT4.0は非対応ですので、
DirectX9を利用するアプリの場合、Win98以降が動作必須環境となります。


> インストーラではbinフォルダ内のファイルをすべてコピーするようにしているだけなのですが、
> なぜかWindowsMediaPlayer8が起動できなくなったり、
> WindowsMediaPlayer9がインストールされている環境でも
> アンインストールするとビデオを再生できなくなったりします。(音声のみ)
> 再びアプリケーションをインストールするとなぜか直ります。
> VB.NET2002のバグくさいような気もするのですが、何かやり方が違うのでしょうか。
> VB.NET2003では私が発見した他のバグもいろいろと修正されていると聞いたので、
> VB.NET2003では起こらないのかもしれません。

まず、インストーラは何を使用されているのですか?
また、単純にファイルコピーを手動で行った場合にはどのようになりますか?
手動コピー⇒○、インストーラ⇒× であれば、インストーラで必要以上のことを
していると思われます。


> binフォルダの中には3つのDLLができていました。
>  AxInterop.WMPLib.DLL
>  Interop.WMPLib.DLL
>  wmp.dll
> すべてインストール時にアプリケーションフォルダ内にコピーするようにしているのですが、
> もしかしてwmp.dll以外必要なかったりします?

まずは手動コピーでEXE⇒DLLの順で一つずつコピーしながら
実行してみるのが一番かと思います。
Binフォルダ内に自動コピーされてきているのであれば、
どれも必要なはずですが。


> もしそうだとしても、やはりアプリケーションフォルダ内にコピーしただけで
> WindowsMediaPlayerが壊れるのは変ですよね。

変ですね。レジストリの情報が書き換えられているとしか思えません。
再インストールで直るということからも、レジストリ登録してしまっていると
思われます。
> 上記の場合、Win98SE以降が動作必須となります。

やっぱりだめですよね。
WindowsMediaPlayer9の動作必須環境がWindows 98SE以降なのは、
もしかしたら視覚関連のものだけで、
AxWindowsMediaPlayerを使用して音声を鳴らすだけなら
SEじゃなくてもできるかもしれないとも思ったのですが・・・

> まず、インストーラは何を使用されているのですか?
> また、単純にファイルコピーを手動で行った場合にはどのようになりますか?
> 手動コピー⇒○、インストーラ⇒× であれば、インストーラで必要以上のことを
> していると思われます。

VB.NET2002のセットアッププロジェクトで作成した標準のインストーラです。
他のインストーラは使ったことがありませんが、
このインストーラ(またはそれを作成するVB.NET2002)のバグっぽい気がします。
家中の他のPCやネット上の友人にも、
この作成したアプリケーションのインストールとアンインストールを試してもらいましたが、
同様の現象が発生しているので。

> まずは手動コピーでEXE⇒DLLの順で一つずつコピーしながら
> 実行してみるのが一番かと思います。
> Binフォルダ内に自動コピーされてきているのであれば、
> どれも必要なはずですが。

アプリケーションフォルダ内からDLLを1つずつ消してみましたが、
やはりすべて必要なようです。消すと実行中にエラーが出ます。

> 実際、WindowsMediaPlayer8のみインストールされている環境で、
> WindowsMediaPlayer9のDLLを使用したアプリを作成し、
> コピーインストールにてインストール後、実行しましたが、
> 作成したアプリ、WindowsMediaPlayer8ともに正常動作した記憶があります。

これはVB.NET2002での結果でしょうか。
VB.NET2003でしたら、修正されているのかもしれません。
VB.NET2005が発売されたら買い替えも検討しているので、
(2002バグ多すぎ。自分で発見したバグだけでも10くらいある。)
2003でならないのなら一応解決です。

まさかとは思いますが、
WindowsMediaPlayerの不正コピー防止機能のようなものが変に機能している結果、
なんてことはありませんよね?w
> やっぱりだめですよね。
> WindowsMediaPlayer9の動作必須環境がWindows 98SE以降なのは、
> もしかしたら視覚関連のものだけで、
> AxWindowsMediaPlayerを使用して音声を鳴らすだけなら
> SEじゃなくてもできるかもしれないとも思ったのですが・・・

音声を鳴らすだけならDirectXという手もありますが、
それは置いといて、まず私が作ったアプリを再度調べてみましたが、
Binフォルダ内には
 AxInterop.WMPLib.dll
 Interop.WMPLib.dll
の二つしかないです。wmp.dllはありませんでした。
私の開発環境は VB.NET 2003 なのでかもしれませんが。
また、VB.NET 2003 のセットアッププロジェクトで作成すると、
wmp.dllを含めてビルドすると以下の警告メッセージがでます。
「警告 : 'wmp.dll' は、リソース ファイル 'C:\WINDOWS\system32\wmp.dll' が
Windows システム ファイルの保護下にあるため、除外されるべきです。」


> アプリケーションフォルダ内からDLLを1つずつ消してみましたが、
> やはりすべて必要なようです。消すと実行中にエラーが出ます。

先の警告メッセージから推測すると、wmp.dllは既にインストール先に
あるという前提でセットアッププロジェクトを作成することが推奨されている
ようですね。


> 他のインストーラは使ったことがありませんが、
> このインストーラ(またはそれを作成するVB.NET2002)のバグっぽい気がします。

私が上記アプリを配布するときに使ったのは Install Shield でして・・・
そのときも上記二つのDLLのみで、wmp.dllは配布しませんでした。
もちろんコピーのみで、レジストリ登録はしていません。
この状態で、アプリ、WMP8ともに正常動作しました。
アンインストールもしましたが、WMP8が動かなくなるようなことは
ありませんでしたよ。


> これはVB.NET2002での結果でしょうか。

上記の通り、VB.NET 2003 で作成したアプリで、
Install Shield でインストールした結果です。
今回VB.NET 2003 のセットアッププロジェクトで
wmp.dllを含むのと含まないものを作成して、以下の環境でテストを行いましたが、
インストール前、インストール後、アンインストール後ともに正常に動作しました。
環境:Windows XP SP2 & WMP9
もちろんセットアッププロジェクトのすべてのEXE、DLLの
Registerプロパティの値はvsdraDoNotRegisterにしました。


> VB.NET2003でしたら、修正されているのかもしれません。
> VB.NET2005が発売されたら買い替えも検討しているので、
> (2002バグ多すぎ。自分で発見したバグだけでも10くらいある。)
> 2003でならないのなら一応解決です。

WMP8がインストールされている環境を構築できないので、そちらではまだテストしていませんが
WMP9でのテスト結果を見る限り、修正されているのかもしれませんね。
会社にいければWMP8の環境もあるのですが、しばらく客先への直行直帰が続くので、
WMP8・VB.NET 2003 でのテストはしばらくお待ち頂けますか?
また、バグを発見された場合はMicrosoftにフィードバックしておくことをお勧めします。


> まさかとは思いますが、
> WindowsMediaPlayerの不正コピー防止機能のようなものが変に機能している結果、
> なんてことはありませんよね?w

それはさすがに無いでしょう。

以下、余談ですが、
2005はBeta版ですが、機能限定版のExpress EditionがMSのサイトからダウンロードできます。
雑誌などにはVS.NET 2005 Beta版がついてますので、こちらを買われてもいいかと。
VB.NET に関しては、Unsigned型がサポートされたので、
かなり使いやすくなっています。
コントロールもいくつか新しくなっていて、買う価値はあるかと。
もちろん私も買う予定です。2003だけじゃなく2005も買うっていったら
うちの財務省がなんていうか分かりませんがw
> 音声を鳴らすだけならDirectXという手もありますが、

WindowsMediaPlayer9でないと再生できないものを再生するので、
DirectXで再生することはできません。

> それは置いといて、まず私が作ったアプリを再度調べてみましたが、
> Binフォルダ内には
>  AxInterop.WMPLib.dll
>  Interop.WMPLib.dll
> の二つしかないです。wmp.dllはありませんでした。
> 私の開発環境は VB.NET 2003 なのでかもしれませんが。
> また、VB.NET 2003 のセットアッププロジェクトで作成すると、
> wmp.dllを含めてビルドすると以下の警告メッセージがでます。
> 「警告 : 'wmp.dll' は、リソース ファイル 'C:\WINDOWS\system32\wmp.dll' が
> Windows システム ファイルの保護下にあるため、除外されるべきです。」

binフォルダ内にはその2つしかないのですが、
セットアッププロジェクトでメインプログラム(exe)を追加する際、
wmp.dllが勝手に追加されますw
インストーラのビルド後もbinフォルダ内にはwmp.dllは存在しません。
ビルド時に出る警告といえば、
「対象のコンピュータに.NET Frameworkをインストールする必要があります」
だけです。

> 上記の通り、VB.NET 2003 で作成したアプリで、
> Install Shield でインストールした結果です。
> 今回VB.NET 2003 のセットアッププロジェクトで
> wmp.dllを含むのと含まないものを作成して、以下の環境でテストを行いましたが、
> インストール前、インストール後、アンインストール後ともに正常に動作しました。
> 環境:Windows XP SP2 & WMP9
> もちろんセットアッププロジェクトのすべてのEXE、DLLの
> Registerプロパティの値はvsdraDoNotRegisterにしました。

すべてのRegisterプロパティを見てみたのですが、
なぜか問題の勝手に追加されたwmp.dllだけvsdrfCOMSelfRegになっていました。
他はvsdraDoNotRegisterでした。

> WMP8がインストールされている環境を構築できないので、そちらではまだテストしていませんが
> WMP9でのテスト結果を見る限り、修正されているのかもしれませんね。
> 会社にいければWMP8の環境もあるのですが、しばらく客先への直行直帰が続くので、
> WMP8・VB.NET 2003 でのテストはしばらくお待ち頂けますか?

お手数をおかけしてすみません。
多分、こちらではテスト(アンインストール)すると9も使えなくなるので、
そちらでは8の環境でも大丈夫そうな気がしますが。

> また、バグを発見された場合はMicrosoftにフィードバックしておくことをお勧めします。

以前InternetExplorer5.5のバグで問い合わせたとき、
「InternetExploer6.0へアップグレードしてください」と言われたので、
多分、「VB.NET2003に買い換えてください」と言われるだけだと思いますw

> 以下、余談ですが、
> 2005はBeta版ですが、機能限定版のExpress EditionがMSのサイトからダウンロードできます。
> 雑誌などにはVS.NET 2005 Beta版がついてますので、こちらを買われてもいいかと。

Beta版が公開されているとは知りませんでした。
しかし、変なソフトをいれてPCが壊れた経験が何度もあるので、
少し様子を見ようと思いますw

> VB.NET に関しては、Unsigned型がサポートされたので、
> かなり使いやすくなっています。
> コントロールもいくつか新しくなっていて、買う価値はあるかと。
> もちろん私も買う予定です。2003だけじゃなく2005も買うっていったら
> うちの財務省がなんていうか分かりませんがw

私は本当は何でも最新のものに買い換えるのは好きではない(お金がない)のですが、
2005に買い換えようとしているのには以下の理由があります。

・2002はバグが多すぎて、MSはまったく修正しようとしない。

アップグレード機能があるのに一度も修正が提供されないのはなぜでしょう。

・2003はメモリ使用量が2002よりもかなり少なくなっている。

どこかのHPでの実験結果で知ったのですが、かなり違うようです。
実際すごく重くてイヤになっています。

・学生なので、専用パッケージを買えばVS.NETでも4000円くらいで済む。

VB.NET2002はなぜかStandardしか発売されておらず、
VB6よりは安くなっているもののVSもVBも高かったです。
そのうちVB.NET2003が発売されるとアカデミックが発売され、
すごく損をしたような気分になっていたら、
まもなくアカデミックよりもっと安いパッケージまで発売されました。
こちらは学生証をコピーしたりしなくてはならないようですが。
> binフォルダ内にはその2つしかないのですが、
> セットアッププロジェクトでメインプログラム(exe)を追加する際、
> wmp.dllが勝手に追加されますw
>
> すべてのRegisterプロパティを見てみたのですが、
> なぜか問題の勝手に追加されたwmp.dllだけvsdrfCOMSelfRegになっていました。
> 他はvsdraDoNotRegisterでした。

なるほど。ちなみに、VB.NET 2003のセットアッププロジェクトでも、
EXEを追加すると、上記二つのDLLとwmp.dllが追加されますよ。
そこからwmp.dllのRegisterプロパティを手動でvsdraDoNotRegisterに変更し、
テストしました。
もしかして、vsdrfCOMSelfRegのままセットアッププロジェクトを作成していませんか?


> お手数をおかけしてすみません。
> 多分、こちらではテスト(アンインストール)すると9も使えなくなるので、
> そちらでは8の環境でも大丈夫そうな気がしますが。

上記の通り、wmp.dllのRegisterプロパティを手動でvsdraDoNotRegisterに
変えれば、VB.NET 2002でもいけそうな気がしますが。
変えたのに現象が発生する、ということであれば、VB.NET 2002のバグなのかも
しれませんが。


> 以前InternetExplorer5.5のバグで問い合わせたとき、
> 「InternetExploer6.0へアップグレードしてください」と言われたので、
> 多分、「VB.NET2003に買い換えてください」と言われるだけだと思いますw

可能性大有りですねw
バグフィックスではなく、アップグレードで済まそうとしているような気がしますから。
.NET Framework1.1でのバグも、2.0で直す気なのでしょう。
2.0 Betaでは直ってなかったのもありますがw


> しかし、変なソフトをいれてPCが壊れた経験が何度もあるので、
> 少し様子を見ようと思いますw

懸命な判断かと。
.NET Framework 2.0 Betaを入れたら、終了しなくなった.NETソフトがあります。
もちろん何かしらおかしな処理が入っていると思われる為、
開発元のサイトに報告しておきましたが。
(自分の作った.NET 1.1のソフトは全て普通に終了するので)


> 私は本当は何でも最新のものに買い換えるのは好きではない(お金がない)のですが、
> アップグレード機能があるのに一度も修正が提供されないのはなぜでしょう。
> ・2003はメモリ使用量が2002よりもかなり少なくなっている。
> ・学生なので、専用パッケージを買えばVS.NETでも4000円くらいで済む。

私もお金ないですよw
バグフィックスに関しては上にも書きましたが、
サービスパックなどのパッチではなく、バージョンアップで対応して行くような
気がします。しばらくは。
2003のメモリ使用量も結構あります。会社のPCは256MBでビルドが遅い遅い。
自宅のPCは1GBあるのでスムーズですが。
なにはともあれ学生ってうらやましいw
2005はBeta版ということで、1GBでもちょっと重いです。
ここらへんも正規版で解消されてることを祈ります。
.NET Frameworkのバグもね。
> なるほど。ちなみに、VB.NET 2003のセットアッププロジェクトでも、
> EXEを追加すると、上記二つのDLLとwmp.dllが追加されますよ。
> そこからwmp.dllのRegisterプロパティを手動でvsdraDoNotRegisterに変更し、
> テストしました。
> もしかして、vsdrfCOMSelfRegのままセットアッププロジェクトを作成していませんか?

図星ですw
Registerプロパティは何なのか知らなかったため(今でもよく分かりませんが)、
いじらずにデフォルトの状態のままビルドしていました。
後で変更してリビルドして再実験してみます。
(警告くらい出してよw>VB.NET2002)

> .NET Framework1.1でのバグも、2.0で直す気なのでしょう。
> 2.0 Betaでは直ってなかったのもありますがw

2.0の計画なんてあったんですね。
というか、もうBeta版が公開されているんですね。
もしかして、VS.NET2005は2.0対応とか。
そうなると、1.0のときみたいに最初は重くかったりバグだらけだったりして、
後に2.1が出て2006が発売されて直るといった感じになるのかも・・・
(勝手な推測w)
どっちみち2006年には社会人になっている(予定w)なので、
2005を買っておかないと損をしますが・・・

> 2003のメモリ使用量も結構あります。会社のPCは256MBでビルドが遅い遅い。
> 自宅のPCは1GBあるのでスムーズですが。

このPC、CPUは3.2GHz、メモリは1024MB(デュアルチャネル512MB×2)ですが、
VB.NET2002は起動からすべての動作、終了まで、すべてがすごく重いです。
前にも書いたどこかのHPの実験結果では、
メモリ使用量から体感動作速度までまったく違ったそうです。
当人はスペックのそれほど高くない中程度のノートPCで試したそうですが、
起動に要する時間やメモリ使用量の変化など、詳細に書かれていました。
メモリのキャッシュのクリアを行ってから計測を行ったそうなので、
かなり正確な値が出ていましたが、どこのHPだったのか覚えていませんw

> なにはともあれ学生ってうらやましいw

その極端に安い4000円くらいのVS.NETのパッケージなんですが、
学生証をコピーする、つまりは卒業年月がMSに知られる、
それって、まさか、学生の間しか使えないってことはないですよね?
ウィルス対策ソフトみたいに期限が来ると継続料金を払わなくてはならないとか。
いくら学生や教員専用のパッケージで、証明がないと使えないようにしたから、
アカデミックパッケージのときのように一般人でも使えるということがなくなったとはいえ、
やはりVSが4000円は安すぎるような気がするもので・・・
> Registerプロパティは何なのか知らなかったため(今でもよく分かりませんが)、
> いじらずにデフォルトの状態のままビルドしていました。
> 後で変更してリビルドして再実験してみます。

Registerプロパティについては私も詳しくは知りませんが、
まあ、名前の通りレジストリ登録するかしないか、という設定なのでしょうね。
きちんとvsdraDoNotRegisterに設定すれば2002でも問題ないと思いますが。


> もしかして、VS.NET2005は2.0対応とか。
> そうなると、1.0のときみたいに最初は重くかったりバグだらけだったりして、
> 後に2.1が出て2006が発売されて直るといった感じになるのかも・・・

VS.NET 2005 は .NET Framework 2.0対応です。
また、今までのを継承して作られていますので、
重かったりバグだらけということはないですよw


> このPC、CPUは3.2GHz、メモリは1024MB(デュアルチャネル512MB×2)ですが、
> VB.NET2002は起動からすべての動作、終了まで、すべてがすごく重いです。

うちよりCPUスペックが高い・・・うらやましw
それでも重いと言われるのですから、相当重いんでしょうね。


> その極端に安い4000円くらいのVS.NETのパッケージなんですが、
> 学生証をコピーする、つまりは卒業年月がMSに知られる、
> それって、まさか、学生の間しか使えないってことはないですよね?
> ウィルス対策ソフトみたいに期限が来ると継続料金を払わなくてはならないとか。

それはないでしょう。


> やはりVSが4000円は安すぎるような気がするもので・・・

安すぎかと。でも、学生だったころはアカデミックパックに
頼ってたんですよね、やっぱりw
VS.NET 2005にはExpress Editionがあり、無料DL可能なので、
アカデミックパックそのものが無いかもしれませんね。
Registerプロパティについてですが、ヘルプにありましたw

以下ヘルプから転載。

【Register プロパティ】
インストール時にファイル、アセンブリ、プロジェクト出力グループをターゲット コンピュータに登録するかどうかを指定します。


Register プロパティの設定値は以下のとおりです。

DoNotRegister:アイテムは登録不要です。
COM:アイテムは、COM オブジェクトとして登録されます。
COMRelativePath:アイテムは、分離 COM オブジェクトとして登録されます。
COMSelfReg:アイテムは、インストール時に COM オブジェクトとして自動登録されます。アセンブリには使用できません。
Font:ファイルは、インストール時にフォント ファイルとして登録されます。


通常、.NET Framework に基づくアイテムは登録が不要で、DoNotRegister が既定値になります。バージョン情報に OleSelfRegister を持つ COM の .dll ファイルまたは .exe ファイルの既定値は COMSelfReg になります。フォント ファイルは Font として登録されます。
> 安すぎかと。

実際あるんです。
http://www.microsoft.com/japan/msdn/student/premium/

Visual Studio .NET theSpoke Premium Version 2003
というのがそれで、どの店でもたいてい4000円前後で売っています。
パッケージ内容はVisual Studio .NET Academicと同じで、
学生証のコピーなど、証明が必要なために安いようです。
ただ、そこまでする以上、卒業後に継続料金をとられたりしてもおかしくないような気がしたもので。

> VS.NET 2005にはExpress Editionがあり、無料DL可能なので、

MSのHPで少し調べたのですが、
Express Editionは機能制限がけっこうあるらしく、
さらに無料なのはベータ公開のときだけで、そのうち有料化する予定だと書いてありました。
これはMSが2005の完成度に自信がないということでしょうかw
せっかくなので有料版を買いたいのですが、なんだか不安になってきました。
2005ではExpress EditionがあるせいでtheSpoke Premiumは発売されないかもしれませんし、
MSのHPの書き方だと、発売は2005年末になる可能性もありますし・・・
それで、まだRegisterプロパティを変更しての実験はしてないんですけど、
実験の前に1つ疑問、というか問題が・・・
すでにRegisterプロパティが間違った状態でビルドしたやつをインストールしてしまっているんですけど、
普通にプログラムの追加と削除からアンインストールするとWindowsMediaPlayerが壊れる訳で・・・
安全にアンインストールする方法ないですかねぇ。
十数人に配布もしちゃったんですよね・・・w
> すでにRegisterプロパティが間違った状態でビルドしたやつをインストールしてしまっているんですけど、
> 普通にプログラムの追加と削除からアンインストールするとWindowsMediaPlayerが壊れる訳で・・・

@アンインストール後、WMP.dllを手動で再インストールする
Aアンインストール後、WMPを再インストールする

くらいでしょうか。
いまさらどうしようもないので、素直にアンインストール後に
wmp.dllを入れ直しましょう。
それにしても十数人に配布って・・・。
もっと早く原因究明に動いてもよかったのでは?
> @アンインストール後、WMP.dllを手動で再インストールする

やってみようとしたのですが、
どうやらアンインストール時にwmp.dllがシステムから削除されるという訳ではないようで、
wmp.dllはアンインストール前にも後にも存在しているため、
この方法ではできませんでした。

> Aアンインストール後、WMPを再インストールする

まず、アンインストール後、WindowsMediaPlayerの上書きインストールを行ってみましたが、
未インストールのものしかインストールしないような機能が働いて解決しませんでした。
次に、WindowsMediaPlayerもアンインストールし、
新規にWindowsMediaPlayerをインストールし直したところ解決しました。

> それにしても十数人に配布って・・・。
> もっと早く原因究明に動いてもよかったのでは?

原因究明するために、調べたり、ここではないVB関連の掲示板で一生懸命に質問したりしたのですが、
まったく原因がつかめず、誰も答えてくれず、遅くなってしまいました。

Registerプロパティを変更して実験してみましたが、
無事に、WindowsMediaPlayerが壊れなくなりました。
配布してしまった人に対しては上記の再インストール方法をHPで知らせるようにします。

ここの掲示板で質問してもrakiさんが答えてくれなかったらいまだに解決していなかったかもしれません。
わざわざ実験等もしてくださり、本当にありがとうございました。
(VB.NET2003みたいに警告が出れば問題は起こらなかったのかも>2002)
(結局、なんでwmp.dllって勝手に追加されるんだろう・・・>VB.NET)
まだまだVB歴が浅いので、単純な質問をしたりすることもあるかもしれませんが、
そのときはまたよろしくお願いします。

-----

VB.NET2002って他にもたくさんバグがあるんですよね〜
自分で発見したんですけど、
フォームのサイズがVB再起動後勝手に変わってしまっているとか、
TextBoxのPasswordCharプロパティがVB再起動後無効になっているとか・・・
他にもまだまだありますが、
これらは他のVB.NET2002所有者と2003所有者にも実験してもらったので、
確実に2002のバグだと思います。
解決済み!
> やってみようとしたのですが、
> どうやらアンインストール時にwmp.dllがシステムから削除されるという訳ではないようで、
> wmp.dllはアンインストール前にも後にも存在しているため、
> この方法ではできませんでした。
>
> Registerプロパティを変更して実験してみましたが、
> 無事に、WindowsMediaPlayerが壊れなくなりました。

ActiveX.dllに代表されるDLLの場合、
システムから削除される⇒DLLが利用できなくなる
ではありません。
レジストリからそのDLLの情報が削除される⇒DLLが利用できなくなる
が正解です。

今回のRegisterプロパティもこれにあたり、
レジストリ登録するかしないか、という設定を行うためにあります。
今回のwmp.dllも使用に際してレジストリ登録が必要なDLLであり、
インストールの際にレジストリ登録が行われるということは、
アンインストール時にレジストリ削除が行われるわけで、
結果、元からあったwmp.dllのレジストリ情報を削除してしまい、
WMP8やWMP9が実行エラーを起こしてしまう、というのが原因です。


> (VB.NET2003みたいに警告が出れば問題は起こらなかったのかも>2002)
> (結局、なんでwmp.dllって勝手に追加されるんだろう・・・>VB.NET)

確かに警告が出れば、問題は起こらなかったかもしれませんね。
VBから各種DLLを利用する場合、タイプライブラリを参照設定したりしますよね。
これが依存関係と呼ばれるもので、インストーラの多くは
この依存関係を調べて、必要なDLLも一緒にインストールしようとしてくれます。
これは、普通に考えれば当たり前のことで、そのDLLがないと
アプリが動かないわけですから、便利な機能ではあるのですが、
まれに今回のようなことが発生することがあります。

今回のwmp.dllのような別アプリケーションのDLLを使用する場合は、
極力インストーラには含めず、利用規定として、
「Windows Media Player 9 がインストールされている必要があります」
と掲げるべきですね。


> まだまだVB歴が浅いので、単純な質問をしたりすることもあるかもしれませんが、
> そのときはまたよろしくお願いします。

お力になれるのであれば、喜んで。
VB6.0の環境がありましたら、ActiveX.dllを自作してみて、
VB6.0の標準EXEから実行するというテストプログラムを作成してみて下さい。
今回の問題の原因となった、レジストリによるDLL参照の仕組みよく分かると思います。


> 確実に2002のバグだと思います。

2002は重い・バグが多い・必要な機能が無いというのは
よく聞かれましたが。(だから2003まで買い控えたんですが)
2005が早くでるといいですね。
> 今回のwmp.dllのような別アプリケーションのDLLを使用する場合は、
> 極力インストーラには含めず、利用規定として、
> 「Windows Media Player 9 がインストールされている必要があります」
> と掲げるべきですね。

ちょっと本題に戻ってしまうようなのですが、
結局、wmp.dllを含めないとWindowsMediaPlayer9以降がインストールされていない環境では
WindowsMediaPlayer9以降のみ実装の機能を使えないのでしょうか。
他2つのDLLだけではだめなのでしょうか。
Windows 98SEやMEがあればすぐ実験できるんですけど・・・
> Windows 98SEやMEがあればすぐ実験できるんですけど・・・

.NET関連の開発者が集う掲示板ですので、Windows 98SEやME利用者は少ないと思うのですが、
(VS.NET動作必須環境がNT/2000/XPのため)
どなたか、98SEやMEでWindowsMediaPlayerをアップグレードしていない(できれば6〜7)方がいらっしゃいましたら、
実験に協力していただけないでしょうか。
私が実験用アプリケーションを作成しますので、
音が聞こえるか聞こえないかだけ教えていただきたいのですが・・・

DOBON.NET | プログラミング道 | プログラミング掲示板