2009-07-25

DOS窓Open

au の Windows Mobile 携帯 E30HT で、Windows のコマンドプロンプトのようなシェルを使いたいと思い、DOS窓Open というソフトウェアを見つけたのでインストールしてみました。このソフトウェアは使用条件の範囲内で無償に使用できます。

インストールしたファイルは、DOS窓Open V2.00 β版の MFC DLL 同梱版 (DMO2BWM50ARMwithDLL.CAB) です。

内部コマンドは、DOS と同じようなコマンドが使用できます。

ADDREG DIR LS PATH ATTRIB DIRREG PAUSE BEEP DUMP POPD BG ECHO PROMPT CALL ENTRY PUSHD CD CHDIR EXIT REM CLS CLEAR GOTO RENAME REN COMP HELP RMDIR RD COPY CP IF SET DATE KILL SHIFT DEL ERASE MKDIR MD TIME DELREG MOVE MV TYPE CAT

関連サイト


[1] フェルメス・ソフト
[2] コマンドラインを利用する方法
 

2009-07-21

Let's Wine(第8回)


winetricks


winetricks は、Wine の 環境に、代表的なランタイムパッケージやアプリケーションを導入するスクリプトです。動作には wget と cabextract が必要になります。

wget は既にインストールされている可能性が高いのですが、一緒にインストールを試みます。(調べればすぐわかることですが、ものぐさしています。)

$ su
パスワード:
$ yum install wget cabextract
Loaded plugins: refresh-packagekit
Setting up Install Process
Package wget-1.11.4-3.fc11.i586 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package cabextract.i586 0:1.2-2.fc11 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
cabextract i586 1.2-2.fc11 fedora 55 k

Transaction Summary
================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 55 k
Is this ok [y/N]: y
Downloading Packages:
cabextract-1.2-2.fc11.i586.rpm | 55 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : cabextract-1.2-2.fc11.i586 1/1

Installed:
cabextract.i586 0:1.2-2.fc11

Complete!
$ exit

適当な場所を用意して、winetricks をダウンロードします。

$ mkdir winesrc
$ cd winesrc
$ wget http://www.kegel.com/wine/winetricks
--2009-07-21 21:41:35-- http://www.kegel.com/wine/winetricks
www.kegel.com をDNSに問いあわせています... 216.92.86.126
www.kegel.com|216.92.86.126|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 86250 (84K) [text/plain]
`winetricks' に保存中

100%[======================================>] 86,250 104K/s 時間 0.8s

2009-07-21 21:41:37 (104 KB/s) - `winetricks' へ保存完了 [86250/86250]

$

winetricks でインストールできるソフトウェアは、下に記した参考サイト [1] の Options に列挙されていますが、ここでは IE6 をインストールしてみましょう。

$ sh winetricks ie6
Executing wget -O InstMsiA.exe -nd -c --read-timeout=300 --retry-connrefused --h
eader Accept-Encoding: gzip,deflate http://download.microsoft.com/download/Windo
wsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe
--2009-07-21 21:48:20-- http://download.microsoft.com/download/WindowsInstaller
/Install/2.0/W9XMe/EN-US/InstMsiA.exe
download.microsoft.com をDNSに問いあわせています... 210.155.101.246, 210.155.101
.231
download.microsoft.com|210.155.101.246|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1709160 (1.6M) [application/octet-stream]
`InstMsiA.exe' に保存中

100%[======================================>] 1,709,160 1.04M/s 時間 1.6s

2009-07-21 21:48:22 (1.04 MB/s) - `InstMsiA.exe' へ保存完了 [1709160/1709160]

Executing cabextract --directory=/home/bitwalk/.wine/drive_c/winetrickstmp /home
/bitwalk/.winetrickscache/InstMsiA.exe
Extracting cabinet: /home/bitwalk/.winetrickscache/InstMsiA.exe
extracting /home/bitwalk/.wine/drive_c/winetrickstmp/msi.dll
(一部省略)
extracting /home/bitwalk/.wine/drive_c/winetrickstmp/mspatcha.dll
extracting /home/bitwalk/.wine/drive_c/winetrickstmp/sdbapi.dll

All done, no errors.
Executing cp -f /home/bitwalk/.wine/drive_c/winetrickstmp/msls31.dll /home/bitwa
lk/.wine/drive_c/windows/system32
Executing wine iexplore -unregserver
Using native,builtin override for following DLLs: iexplore.exe itircl itss jscri
pt mlang mshtml msimtf shdoclc shdocvw shlwapi urlmon
Executing wine regedit /home/bitwalk/.wine/drive_c/winetrickstmp/override-dll.re
g
Setting Windows version to win2k
Executing wine regedit /home/bitwalk/.wine/drive_c/winetrickstmp/set-winver.reg
Executing wget -O ie6sites.dat -nd -c --read-timeout=300 --retry-connrefused --h
eader Accept-Encoding: gzip,deflate http://www.microsoft.com/windows/ie/ie6sp1/d
ownload/rtw/x86/ie6sites.dat
--2009-07-21 21:48:24-- http://www.microsoft.com/windows/ie/ie6sp1/download/rtw
/x86/ie6sites.dat
www.microsoft.com をDNSに問いあわせています... 207.46.192.254, 207.46.193.254
www.microsoft.com|207.46.192.254|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 2788 (2.7K) [application/octet-stream]
`ie6sites.dat' に保存中

100%[======================================>] 2,788 --.-K/s 時間 0.001s

2009-07-21 21:48:24 (2.91 MB/s) - `ie6sites.dat' へ保存完了 [2788/2788]

Executing wget -O ie6setup.exe -nd -c --read-timeout=300 --retry-connrefused --h
eader Accept-Encoding: gzip,deflate http://download.microsoft.com/download/ie6sp
1/finrel/6_sp1/W98NT42KMeXP/EN-US/ie6setup.exe
--2009-07-21 21:48:25-- http://download.microsoft.com/download/ie6sp1/finrel/6_
sp1/W98NT42KMeXP/EN-US/ie6setup.exe
download.microsoft.com をDNSに問いあわせています... 65.54.91.93, 65.54.91.94
download.microsoft.com|65.54.91.93|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 491768 (480K) [application/octet-stream]
`ie6setup.exe' に保存中

100%[======================================>] 491,768 986K/s 時間 0.5s

2009-07-21 21:48:25 (986 KB/s) - `ie6setup.exe' へ保存完了 [491768/491768]

err:setupapi:SetupDefaultQueueCallbackW copy error 2 L"C:\\windows\\msdownld.tmp
\\AS026AFE.tmp\\IEEX\\expinst.exe" -> L"C:\\Program Files\\Internet Explorer\\W2
K\\expinst.exe"
mmap() failed: メモリを確保できません
(一部省略)
mmap() failed: メモリを確保できません
\AS0271D1.tmp\setup_wm.exe: pulse.c:200: pulse_new: Assertion `p->context' が失
敗しました.
err:module:import_dll Library DRMClien.DLL (which is needed by L"C:\\windows\\sy
stem32\\dxmasf.dll") not found
Clearing Windows version back to default
Executing wine regedit /home/bitwalk/.wine/drive_c/winetrickstmp/unset-winver.re
g
Install of ie6 done
winetricks done.
$

IE6 のインストーラが起動します。

コンソール上にいろいろエラーメッセージが出ていますが、なんとかインストールが終了します。とにかく IE6 を起動してみましょう。ショートカットがないので、直接起動してみます。

$ wine cmd
CMD Version 1.1.23

Z:\home\bitwalk>c:
C:\>dir
Volume in drive C is
Volume Serial Number is 0000-0000

Directory of C:\

2009/07/21 21:50 <DIR> Program Files
2009/06/16 21:24 <DIR> users
2009/07/21 21:53 <DIR> windows
2009/07/21 21:53 <DIR> winetrickstmp
0 files 0 bytes
4 directories 25,903,710,208 bytes free

C:\>cd program files
C:\Program Files>dir
Volume in drive C is
Volume Serial Number is 0000-0000

Directory of C:\Program Files

2009/07/21 21:50 <DIR> .
2009/07/21 21:50 <DIR> ..
2009/07/21 21:50 <DIR> Common Files
2009/07/21 21:53 <DIR> Internet Explorer
2009/07/21 21:50 <DIR> Outlook Express
0 files 0 bytes
5 directories 25,903,726,592 bytes free

C:\Program Files>cd internet explorer
C:\Program Files\Internet Explorer>dir
Volume in drive C is
Volume Serial Number is 0000-0000

Directory of C:\Program Files\Internet Explorer

2009/07/21 21:53 <DIR> .
2009/07/21 21:50 <DIR> ..
2009/07/21 21:50 <DIR> 1033
2009/07/21 21:50 <DIR> Connection Wizard
2002/08/29 7:14 155,648 DW15.EXE
(一部省略)
2002/08/29 7:14 91,136 IEXPLORE.EXE
2009/06/26 19:59 2,524 iexplore.exe.bak
2002/08/29 7:14 41,224 readme.txt
2009/07/21 21:50 <DIR> SIGNUP
2002/08/29 7:14 21,809 support.txt
2009/07/21 21:50 <DIR> W2K
9 files 890,890 bytes
6 directories 25,903,022,080 bytes free

C:\Program Files\Internet Explorer>iexplore

まず、どこかで見たことがあるメッセージがでます。
Yes をクリックして次に進むと、IE6 が無事表示されます。

安定度はわかりませんが、日本語フォントも表示され、それなりに使えそうです。

参考サイト
[1] winetricks - The Official Wine Wiki
 

2009-07-20

Win32 用 GTK ランタイムライブラリ

Get MinGW Cross Compiler at SourceForge.net. Fast, secure and Free Open Source software downloads

Fedora 上でクロスコンパイルした GTK2 のアプリケーションを手軽に Windows 環境で実行できるようにと、Fedora の MinGW パッケージをベースにして、GTK2 のランタイムパッケージのインストーラを作りました。まだ必要最低限のパッケージしか収録していませんが、今後、必要な収録パッケージを吟味して増やしていきたいと考えています。

Browse MinGW Cross Compiler Files on SourceForge.net
- gtk2-2.16.1-001-20090720.exe

インストール先の bin にパスを通すときは、この画面でチェックを入れます。

デフォルトのインストール先以外を選択したときには、インストール後に、etc/pango/pango.modules の内容を編集してライブラリの参照先を適切に指定してください。これを怠るとフォントが正しく表示されません。インストーラの方で、このあたりの設定もサポートするようにしたいのですが、準備に時間がかかりそうだったので、今回は何もしていません。

2009-07-18

wxWidgets でもクロスコンパイル(2)

Get MinGW Cross Compiler at SourceForge.net. Fast, secure and Free Open Source software downloads

Fedora 11 から Win32 クロスコンパイル用パッケージが正式にサポートされるようになって、自分の SourceForge.net のプロジェクトサイトで、クロスコンパイル用 RPM パッケージの公開に対するモチベーションが下がってしまい、活動が低調になっていました。

とあるユーザから、wxWidgets 用の RPM を Fedora 11 用にも公開してほしいというメールを受け取りました。

Date: Thu, 16 Jul 2009 14:51:21 +0200
Subject: mingw-wxwidgets on fedora11?
From: ##### ######### <#####.########@gmail.com>
To: bitwalk at users.sourceforge.net

Dear ####### #########,

I've succesfully used your rpm packaging of mingw32-wxWidgets on fedora 10
(mingw32-wxWidgets-2.8.9-2.fc10.noarch.rpm), it was really helpful to me in
developing a cross-platform application that I need to mantain. So much
important that the only thing that I'm actually waiting for before
switching to fedora11 is exactly the release of the same package for
fedora11. So I would like to ask you if you have any plan to release such
package for fedora11, or if there is any way that I can use the f10
package on fedora11.

Thank you very much for your attention and many thanks for your great work,
##### ########

wxWidgets の RPM パッケージについては、Fedora MinGW のメーリングリストで話題が出ていたので、きっと誰かが作るだろうと放っておいたのでした。しかし、直接メールを送ってくれるユーザがいれば話は別です。返事を出して早速パッケージを作成しました。

Browse MinGW Cross Compiler Files on SourceForge.net
- mingw32-wxWidgets-2.8.10-1.fc11.noarch.rpm
- mingw32-filesystem-50-3.fc11.2.noarch.rpm

このサイトで公開した mingw32-filesystem は、wxWidgets のファイルの依存性を解決するために必要になります。

以前、「wxWidgets でもクロスコンパイル」で紹介したサンプルを再掲して、現在の環境に合わせたクロスコンパイル方法を紹介します。サンプルは以下をベースにしています。

Hello World - wxWidgets

表示される文字列を日本語にした他は、同じプログラムです。

// Hello World program with wxWidgets
#include "wx/wx.h"

class MyApp: public wxApp
{
virtual bool OnInit();
};

class MyFrame: public wxFrame
{
public:

MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);

void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);

DECLARE_EVENT_TABLE()
};

enum
{
ID_Quit = 1,
ID_About,
};

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(ID_Quit, MyFrame::OnQuit)
EVT_MENU(ID_About, MyFrame::OnAbout)
END_EVENT_TABLE()

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame(_T("こんにちは、世界!"),
wxPoint(50,50), wxSize(450,340));
frame->Show(TRUE);
SetTopWindow(frame);
return TRUE;
}

MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, -1, title, pos, size)
{
wxMenu *menuFile = new wxMenu;

menuFile->Append(ID_About, _T("このプログラムについて(&A)"));
menuFile->AppendSeparator();
menuFile->Append(ID_Quit, _T("終了(&x)"));

wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append(menuFile, _T("ファイル(&F)"));

SetMenuBar(menuBar);

CreateStatusBar();
SetStatusText(_T("wxWidgets へようこそ!"));
}

void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(TRUE);
}

void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxMessageBox(_T("はじめてのプログラム、こんにちは、世界!"),
_T("このプログラムについて"), wxOK | wxICON_INFORMATION, this);
}
// END PROGRAM
// hello.cpp


コンパイルには、Linux の pkg-config を利用するので、MinGW のバイナリがインストールされている /usr/i686-pc-mingw32/sys-root/mingw/bin へパスを通しておきます。もし、Linux 用の wxWidgets もインストールされている場合には、検索パスを順序も含めて適正に指定するか、pkg-config の代わりに MinGW クロスコンパイル用の i686-pc-mingw32-pkg-config を利用すればいいでしょう。

$ export PATH=$PATH:/usr/i686-pc-mingw32/sys-root/mingw/bin
$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/bin:/usr/b
in:/usr/local/sbin:/usr/sbin:/sbin:/home/bitwalk/bin:/opt/mingw32ce/bin:/usr/i68
6-pc-mingw32/sys-root/mingw/bin

$ i686-pc-mingw32-g++ hello.cpp `wx-config --libs` `wx-config --cxxflags`
-o hello.exe


wbc で、ビルドした hello.exe が依存する DLL を調べると、次の様になります。




Wine


Wine 上で実行した例を示しました。

$ ./hello.exe


Windows


関連する DLL と一緒に Windows Vista へコピーして実行すると以下の様になります。とりあえず日本語表示は問題なさそうです。

Linux


Linux 上で Win32 用にクロスコンパイルしましたが、wxWidgets はクロスプラットフォーム対応のツールキットですので、Linux 上でそのまま、Linux ネイティブ用にコンパイルして実行することも(もちろん)できます。

$ g++ hello.cpp `wx-config --libs` `wx-config --cxxflags` -o hello
$ ./hello



[1] MinGW クロスコンパイル環境の設定