misc.log

日常茶飯事とお仕事と

Oracle11g、ODP.NETの配布

OTNから、xcopyによるクライアントライブラリの配布が可能になっているとのニュースメールが届いたので見てみた。

Instant ODP.NET Deployment
http://www.oracle.com/technetwork/issue-archive/2008/08-nov/o68odpnet-101744.html
downloadable from OTN
http://www.oracle.com/technology/software/tech/windows/odpnet/index.html?msgid=7097430txt


また、日本語ドキュメントとしてこんなのも。

Oracle Data Provider for .NETのインストール(11.2.0.2)
http://docs.oracle.com/cd/E16338_01/win.112/b62267/InstallODP.htm


10gの案件で、客先PCにCDからクライアントを入れて回るという作業を行ったので、xcopyによる簡単配布ができるなら結構うれしいと思います。上記のページによると、配布元環境に展開したライブラリは、\Oracle フォルダ以下を丸々対象環境にxcopyし、対象環境のPath環境変数に2点ほど追記を行えば利用可能になるとのこと。


ところで、10gではダメだったのか?もしかして出来たのでは?と思い調べてみました。Oracleの公式な文書には行き当たらなかったのですが、OTN Forumで同様の話が出ているのを見つけました。

OTN Forum/ODP.Net and Instant Client install
http://forums.oracle.com/forums/thread.jspa?messageID=2330315


また、「どうにかならんのか!」というぼやきも含めたやりとりはこちら。

ODP.NETはアプリ配布時にインストールされているのが前提?
http://otn.oracle.co.jp/forum/message.jspa?messageID=35016708


ODP.NETの利用にはOracle ClientかInstant Clientが必要ですが、10g以前のODPにはこれらが含まれて居らず、結局、ODP本体は.NET系の流れをくんでいても、依存先が必要なのでクライアントライブラリが別途必要になっていたようです。ですが、11gではそれが統合されたようで(厳密には統合なのかどうなのかは判りませんが)。


何にせよ、配布が楽になるのであればそれはいいことですね。


LargeAddressAwareをプログラムから設定してみる

http://d.hatena.ne.jp/frontline/20081008/p3 に書いていた、EditBin.exeを用いたバイナリイメージヘッダへの/LargeAddressAware設定、どうもコレをプログラム内部からVB.NETとかでも設定できそうなので、試してみることにした。参考にしたページは以下の通り。

VCLinkerTool.LargeAddressAware プロパティ
http://msdn.microsoft.com/ja-jp/library/microsoft.visualstudio.vcprojectengine.vclinkertool.largeaddressaware(VS.80).aspx
DTE オブジェクトの参照
http://msdn.microsoft.com/ja-jp/library/aa291913(VS.71).aspx

処理の中で、Microsoft.VisualStudio名前空間にあるライブラリを利用する必要があり、いくつか普段使わないDLLを参照する必要がある。その流れで読む必要が出てきたのが後者のURL。先日作った大量配列確保プログラムにラジオボタンを追加し、動的に設定のON/OFFを行えるようにしてみてこのあと実験する。

...うまくいかない。DTEオブジェクトなるものとかの使い方や意義についてきっちり勉強しないとダメっぽいので断念しておく。

.NET Framework 2.0 SP1で修正される問題点

.NET Framework 2.0 SP1で修正される問題の一覧がどうにも見つからなかったのだけど、海外のブログ経由で見つかった。なんでこんなに埋没してんの??

.NET Framework 2.0 Service Pack 1 で修正される問題
http://support.microsoft.com/?id=945757

なお、以下の点に注意。

  • .NET Framework 3.5(SP無し)には、2.0のSP1と3.0のSP1が含まれます。3.X系は2.0への追加であり、1.1と2.0のような完全相互独立の関係じゃないので、3.5を入れた時点でSP1が適用されてしまうことを知らないと、その辺を気にする人や企業は面倒なことになるかと。
  • .NET Framework 3.5 SP1を適用すると、.NET Framework 2.0のSP2が自動適用されます。2.0 SP2だけの単独適用ってのは出来ないのかな(よくわからん)。

なお、SP1が入っているかどうか、といったことをきちんと見分ける方法はちょっと判りませんでした。念のため仮想PCに入れてみたりはしたのですが、やはり「プログラムの追加と削除」に出てくる名称に「SP1」って書いてあるかどうか、というのを見るのが確実っぽい。


ちなみに参考にしたブログは以下の通り。

Microsoft .NET Framework 2.0 Service Pack 1, and How to Detect It
http://blogs.msdn.com/heaths/archive/2007/11/26/microsoft-net-framework-2-0-service-pack-1-and-how-to-detect-it.aspx
Problems that are fixed in the .NET Framework 2.0 Service Pack 1
http://readcommit.blogspot.com/2007/12/problems-that-are-fixed-in-net.html