仕方なく方法を探っただけで、やりたいわけでは…
Windowsで動くDB関係のシステムが、XP上で動くものの、Windows7では動作しない。
何とかならないか?と相談を受けて、検討している。
調べてみると、OfficeXP上のAccessを利用して構築されたシステム。
しかし、当時Setupしたものの、すでにそのDiskは無い。
一応、お客の所でWindows7上のAccessでテストしたものの、起動せず…。
そこで、データだけは抜き出して、移植(というか再構築というか、まぁ作り直し)することに。
使用していない機能も多いため、聞き取りを行い、要件定義をしてみたり、設計してみたり…。
さて問題は旧データを取り出して使えるかだ。
我が家の仮想マシン(WindowsXPもWindows7)は、Accessなんて入っていない。
そもそも、Accessは、複数マシンからアクセスした時に超遅くて、挙句の果てにファイル壊してくれたりして以来、使用していない。
だからもう、10年以上開発には使っていないなぁ。
ずっと、PostgreSQLとMySQLでやってきたので、Accessが入っていないのも当然。
iMacのMS-OfficeにはAccessは含まれていない。
MDB Viewer Plusを発見
検索語「MDB Viewer」で引っかかったので、まんまの名前だったww
Accessなしで、MDBファイルから直接内容を読み取れるらしい。
早速、Windows7上で試してみる。
一応、MDBファイルは確かに読める。
ReportやForm、コードはダメだが、DB自体は読み込めるし、Exportも可能だ。
まぁ、最低限、過去のデータを手入力しなくても良さそうなので、一安心。
開発のことを考えると、迷うところ。
- Excelとマクロで無理やり作る。
- Windows上の新しいAccess2013で構築する。
- バックエンドにDBサーバを置いて、Windows上のアプリを作成する。
- バックエンドにDBサーバを置いて、WEBアプリで作成する。
どれも、一長一短だ。
半分ほど手作業で、補助ツールを用意する程度のシステムにしておけば、万が一の場合や、保守しなくなったりしても自分たちで何とかできるかもという考えでのExcel+マクロなんだけど…。
そもそも、WindowsXPのようにサポートが切れ、利用不可になるOS上のDB。Accessで構築したために、今回移行できずに困っているわけなので、特定のアプリに縛られない方が良いような気もする。
気持ち的には4のWEBアプリが、保守とかしやすくて良さそうだけれど、UIがどうしても貧弱になってしまうので…。
設計は置いといて
まあ、今後の作業はとりあえず、これから検討するとして…。
このMDBをUbuntu上で読み書きできれば、作業効率も上がるかなぁと考えたりして。
何せ、Windowsは仮想マシンなので、起動に20〜30秒ほどはかかる。ログインして使える状態まで約1分程度は待つのが嫌だし、AntiVirusのパターンファイルの更新やら、WindowsUpdateの更新などがかかって、まともに使えるまでに結構時間がかかるのでWindows上で作業したくないというのが本音。
何せ、SSD搭載のX200が爆速で、電源ONから使えるまでの20秒に慣れてしまうと…。
そこで、MDB Viewer Plusをwineで動かしてみる。
$ wine mdbplus.exe
エラー吐いて、お亡くなりになります。
くそっ、ダメか…。
念の為、ググってみる。
その中のPOSTに
using winetricks for install packages mdac28, vcrun6, mfc42 is solved this problem.
but i imagine that not all of this packages is need in this case.
if you have some time, then start please from 'winetricks mdac28' and then try to run 'wine <app>'.
なんてヒントがあった。
MDACとは Microsoft Data Access Components (MDAC)のことだ。
そうか、これがあれば行けるのか?
早速、mdac28を入れてみる(28はバージョンなのかなぁ…ちょっと不安だけど、良くわかっていないし…)
$ winetricks mdac28
すると、ネットからインストールしてくれる。
Executing w_do_call mdac28
Executing load_mdac28
Executing mkdir -p /home/username/.cache/winetricks/mdac28
Downloading http://download.microsoft.com/download/4/a/a/4aafff19-9d21-4d35-ae81-02c48dcbbbff/MDAC_TYP.EXE to /home/username/.cache/winetricks/mdac28
--2014-04-21 22:07:30-- http://download.microsoft.com/download/4/a/a/4aafff19-9d21-4d35-ae81-02c48dcbbbff/MDAC_TYP.EXE
download.microsoft.com (download.microsoft.com) をDNSに問いあわせています... 2402:6b00:0:2d::db75:21a3, 2402:6b00:0:2d::db75:219a, 219.117.33.137, ...
download.microsoft.com (download.microsoft.com)|2402:6b00:0:2d::db75:21a3|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 6100504 (5.8M) [application/octet-stream]
`MDAC_TYP.EXE' に保存中
100%[======================================>] 6,100,504 1.63MB/s 時間 4.4s
2014-04-21 22:07:35 (1.33 MB/s) - `MDAC_TYP.EXE' へ保存完了 [6100504/6100504]
Using native,builtin override for following DLLs: odbc32 odbccp32 oledb32
Executing winetricks_early_wine regedit C:\windows\Temp\_mdac28\override-dll.reg
Setting Windows version to win98
Executing winetricks_early_wine regedit C:\windows\Temp\_mdac28\set-winver.reg
Executing wine mdac_typ.exe
err:richedit:ReadStyleSheet skipping optional destination
err:richedit:ReadStyleSheet skipping optional destination
err:richedit:ReadStyleSheet skipping optional destination
err:richedit:ReadStyleSheet skipping optional destination
err:richedit:ReadStyleSheet skipping optional destination
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\msvcrt.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\mtxfiles.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\MDACxpak.CAB"
fixme:setupapi:SetupDefaultQueueCallbackW notification 262144 params f529e0,0
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\MDACxpak.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\SQLXMLXP.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\sqlnet.cab"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\sqlodbc.cab"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\SQLOLDB.CAB"
fixme:advpack:set_ldids Need to support changing paths - default will be used
fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet "C:\\users\\username\\Temp\\IXP000.TMP\\JETFILES.CAB"
Setting Windows version to winxp
Executing winetricks_early_wine regedit C:\windows\Temp\_mdac28\set-winver.reg
ここで、先ほどと同じく
$ wine MDBplus.exe
とすると、さっくりと動くじゃないですか…。
Windows7上で動かした時と、全く同じ動作をしてくれます。
最近のwineは本当に、良く動くようになったなぁと、改めて感心します。
(って先日のFileMakerの時も感心したんだったなぁ)
そこで、目的のMDBを開いてみると、パスワードの確認ダイアログを通過。
ところが…。
ERRORを吐いて、先へ進めない。
msxml3/msxml6かもという書き込みをみて、winetricksで入れてみるがだめだった。
MDACのバージョンだとか、DLLのバージョンの相違で起きるらしいのだが…。
現状、ここまででしか動かせなかった〜。
あと、少しな感じなのになぁ。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。