MasteringVFP/19/1

出自VFP Wiki

(修訂版本間差異)
跳轉到: 導航, 搜尋
第1行: 第1行:
-
=== WINE ===
+
[http://www.bjicp.com ICP代办]
-
談如何在 Linux 上使用VFP, 主要就是應用 WINE 這個 Open Source 來讓 Windows 的可執行檔能在 Linux 下執行.大致的介紹順序如下:
+
[http://www.bjicp.com ICP]
 +
[http://www.bjicp.com ICP办理]
 +
[http://www.bjicp.com ICP证]
 +
[http://www.bjicp.com 北京ICP]
 +
[http://www.bjicp.com ICP经营许可证]
 +
[http://www.bjicp.com 申请ICP经营许可证]
 +
http://www.bjicp.com/images/braintemp_1.jpg{nid GFY}
-
====前言====
 
-
由於 Linux 的風行,有人就想,為什麼不把 VFP 放到 Linux 上呢?
 
-
於是就有人積極的尋找 Solution.
 
-
首先發現的就是 wine, 這個可以執行 Windows 執行檔的自由源碼專案.
+
[http://www.bjicp.net ICP代办]
-
wine 是 wine is not emulator, 很清楚的指出,他並不是一個模擬器.
+
[http://www.bjicp.net ICP]
-
它可以執行 Windows 的 PE 執行檔,並將實際的 Windows API 轉為 Linux 的相對指令.
+
[http://www.bjicp.net ICP办理]
 +
[http://www.bjicp.net ICP证]
 +
[http://www.bjicp.net 北京ICP]
 +
[http://www.bjicp.net ICP经营许可证]
 +
[http://www.bjicp.net 申请ICP经营许可证]
 +
http://www.bjicp.net/images/logo.jpg {nid GFY}
-
很幸運的,VFP 可以大致順利的在 Linux 上執行.
+
[http://www.bjicp.org ICP代办]
-
於是,展開了與 wine 共舞的樂章.
+
[http://www.bjicp.org ICP]
-
 
+
[http://www.bjicp.org ICP办理]
-
在此特別聲明,以下資料多半來自於網路上,我會盡力註明出處.
+
[http://www.bjicp.org ICP证]
-
 
+
[http://www.bjicp.org 北京ICP]
-
====Wine 的歷史====
+
[http://www.bjicp.org ICP经营许可证]
-
請直接參考 2003/08/15 的 Wine Traffic, 網址是:
+
[http://www.bjicp.org 申请ICP经营许可证]
-
http://kt.zork.net/wine/wn20030815_183.html#5
+
http://www.bjicp.org/image/s2.gif{nid GFY}
-
 
+
-
====安裝,from tarball====
+
-
請先到 wine 官方網站(http://www.winehq.org)下載 tarball 檔案.
+
-
以 tar xzf 解開之後,我們還要進行 patch, patch 檔網址在此:
+
-
http://www.paulmcnett.com/vfp/wine/vfpwinepatchwinsize
+
-
這個 patch 檔主要是修正 WAIT WINDOW 和 !TooltipText window 無法正確顯示的問題.
+
-
Patch 方法:
+
-
cat vfpwinepatchwinsize | patch -p1
+
-
也可以手動編輯 wine/dlls/x11drv/winpos.c
+
-
在約 887 行的地方,找到
+
-
<pre>
+
-
BOOL
+
-
X11DRV_SetWindowPos( WINDOWPOS *winpos )
+
-
</pre>
+
-
這個 function,並在裡面的
+
-
<pre>
+
-
TRACE
+
-
"hwnd %p ......
+
-
</pre>
+
-
之前加上
+
-
<pre>
+
-
    /* This is needed to flush pending X !ConfigureNotify events on this window */
+
-
MsgWaitForMultipleObjectsEx( 0, NULL, 0, 0, 0 );
+
-
</pre>
+
-
存檔以後即可.
+
-
然後再執行 ./tools/wineinstall
+
-
它會出現訊息,建議不要以 root 身分來安裝.
+
-
如果你堅持要以 root 身分來安裝, 請先離開此 script, 修改此 script,讓他忽略此訊息.(178~184 行,前面加上'#' ) ,再執行此 script.
+
-
如果要用別的身分來安裝,請用 su 指令切換到其他 user 帳號,或重新以其他 user 帳號登入,再執行 ./tools/wineinstall 即可.
+
-
 
+
-
此 script會執行 ./configure,設置必要的設定檔以及路徑.
+
-
然後再執行
+
-
<pre>
+
-
make depend && make && make install
+
-
</pre>
+
-
進行編譯及安裝工作.
+
-
 
+
-
若以其他user進行安裝的話,就依照 script指示即可
+
-
wine 最後會以 SUID 形式存在.
+
-
 
+
-
====RPM 安裝====
+
-
請到官方網站下載符合你 Linux distribution 的 RPM 版本.
+
-
然後執行
+
-
<pre>
+
-
rpm -ivh wine-2003xxxx.ix86.rpm
+
-
</pre>
+
-
即可~
+
-
但要注意的是,不保證可以用,建議還是以 tarball 安裝較佳.這樣也可加上 patch.
+
-
 
+
-
====Usage====
+
-
winhelp,notepad, regsvr32, regedit 這幾個不用說明,就跟Windows 上的一樣~
+
-
progman 的話就跟 Windows 3.1 上的 Progman 一樣,執行以後,
+
-
有用過 Windows 3.1 的人,大概會很懷念~
+
-
*winefile 則是檔案總管
+
-
*wcmd 是"命令提示字元"
+
-
*uninstaller 則是"新增/移除程式"
+
-
*winecfg 則是調校 wine 設定的程式
+
-
執行軟體時,以 wine 執行之,假設你複製了小算盤(calc.exe)進去\n那麼就輸入 wine calc.exe 即可~
+
-
安裝軟體,也一樣,執行 setup 即可:
+
-
<pre>
+
-
wine setup.exe
+
-
</pre>
+
-
 
+
-
====Configuration====
+
-
"Version" Section 的 Windows key 值改為 win2k
+
-
"DllOverrides" Section 中所有 key 值改為 "native, builtin"
+
-
此外把你自己 Winnt\system32 或 Windows\system 下的
+
-
<pre>
+
-
OLEAUT32.DLL
+
-
COMMDLG.DLL
+
-
COMDLG32.DLL
+
-
SHELL.DLL
+
-
SHELL32.DLL
+
-
SHFOLDER.DLL
+
-
SHLWAPI.DLL
+
-
SHDOCVW.DLL
+
-
ADVAPI32.DLL
+
-
MSVCRT*.DLL
+
-
VFP6*.DLL
+
-
ODBC32.DLL
+
-
ODBC32GT.DLL
+
-
ODBC16GT.DLL
+
-
ODBCINT.DLL
+
-
ODBCCONF.DLL
+
-
</pre>
+
-
都複製到 ~/c/windows/system 下
+
-
此外,OLE32.DLL, ADVAPI32.DLL, NTDLL.DLL 是不需要複製的,因為會造成無法執行.
+
-
REGEDIT.EXE 也請複製到 ~/c/windows 下,因為我們要把 ODBC 的 Registry import 進去.
+
-
你也許會問 wine 不是提供了 regedit.exe 嗎?可是根據我自己的試驗,它並無法匯入.
+
-
請在 Windows 下執行 regedit.exe 將
+
-
<pre>
+
-
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers
+
-
</pre>
+
-
以及
+
-
<pre>
+
-
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Microsoft Visual FoxPro Driver
+
-
</pre>
+
-
這兩個機碼都匯出.分別存為 ODBCDrivers.reg 及 VFPDriver.reg
+
-
然後編輯 ODBCDrivers.reg ,將其他 Driver 都刪掉,只留下 Microsoft Visual FoxPro Driver 即可,接著就拿到 Linux 上,執行 regedit.exe 匯入囉.
+
-
 
+
-
====開始使用 VFP====
+
-
我自己是建議不要用 setup 安裝,網路上的一些狐友也這樣說
+
-
就是用 copy 的方式把 Program Files 目錄下的 VFP 目錄直接複製到 ~/c/Program Files 下
+
-
再參考上面的 Configuration 一節作修正.
+
-
接著就可以執行 wine VFP6.EXE 啦~~
+
-
進入以後,你會發現 command window 無法顯示游標,請用 Alt+TAB 切到別的視窗,
+
-
再按一次 Alt+TAB 切回 VFP,即可.
+
-
 
+
-
====Issue====
+
-
*Declare DLL ok
+
-
大部分函數都已經實作出來了~
+
-
可能會發生的問題,多半是路徑問題,此問題可以藉著修改 ~/.wine/config 來解決.
+
-
 
+
-
*Record locking
+
-
20030318 版之前是有問題的,但之後的版本就都可以了
+
-
 
+
-
*ActiveX
+
-
有些 ActiveX 會無法使用,那是因為有些 function 還沒實作出來的原因.
+
-
 
+
-
*中文
+
-
對我們來說,這是最大的問題了.Linux 中雖然已經支援中文,可是 wine 看來是還未支援,也因此,文字無法輸入到 VFP 視窗中.此外,字型名稱也是一大問題,由於小弟對中文字型設定這部分還不是很熟,再加上目前 X 組織又提出一個新的技術 Xft 要解決字型名稱問題,所以請期待吧~
+
-
 
+
-
*其他
+
-
**沒有 HTML Help.
+
-
**在 Class Designer/Form Designer 裡面無法 copy/paste 物件.
+
-
**Undocked windows 需要被設定為 undockable (在Title band 按下滑鼠右鍵) 或他們無法取得 focus.
+
-
 
+
-
====EULA - Microsoft 的阻撓====
+
-
以下大致從 http://www.linuxtransfer.com/h/misc_vfplinuxjackofhearts.htm 譯出.
+
-
僅將大意譯出,如果譯的不好,還請見諒.
+
-
 
+
-
事情是這樣開始的,就在今年的四月左右,Ken Levy,Whil Hentzen在展示一個關於 VFP on Linux 的 Demo 之後,他接到一通來自微軟的電話,告知他說,這樣的一個 Demo 將可能會與
+
-
VFP EULA 衝突.後來這件事情就慢慢的擴散....
+
-
什麼是 EULA ?? EULA 就是 End User Licence Aggreement 的縮寫.
+
-
以下就是與 VFP on Linux 有關的 VFP8 EULA條款:
+
-
3.1 General Distribution Requirements.
+
-
(a)
+
-
If you choose to redistribute Sample Code, or Redistributable Code
+
-
(collectively, the "Redistributables") as described in
+
-
Section 2, you agree:
+
-
(i)
+
-
except as otherwise noted in Section 2.1 (Sample Code), to distribute
+
-
the Redistributables only in object code form and in conjunction with
+
-
and as a part of a software application product developed by you that
+
-
adds significant and primary functionality to the Redistributables
+
-
("Licensee Software");
+
-
(ii)
+
-
that the Redistributables only operate in conjunction with Microsoft
+
-
Windows platforms;
+
-
在 VFP 社群要求微軟作進一步說明的一星期後,這是微軟的說明(澄清):
+
-
Visual FoxPro was designed and tested for use in creating applications that
+
-
run on the Microsoft Windows platform; the same applies to the components
+
-
that are provided to developers for redistribution with Visual FoxPro-based
+
-
applications. If a developer wishes to distribute the Visual FoxPro
+
-
runtime with an application, the runtime may only operate in conjunction
+
-
with a Microsoft Windows platform. As with any contract, you should seek your own legal counsel's advice when interpreting your rights and obligations under the Visual FoxPro End User License Agreement.
+
-
大意是,VFP本身是在 Windows 平台上發展及測試的,和VFP一起提供給開發者散佈的元件也是.如果開發者想要將VFP runtime和應用程式一起發佈,runtime 應該只能(may only)在Microsoft Windows 平台上運行.如同任何的合約,你應該尋求你的法律顧問的建議.
+
-
在這篇文章中,http://www.linuxtransfer.com/h/misc_vfplinuxjackofhearts.htm
+
-
提出了三點疑問,
+
-
1.Running the VFP Development Environment on Linux
+
-
VFP 開發者想要在一台 Linux 機器上將 VFP 當作一個開發環境.
+
-
這個企圖正是 McNett's FoxTalk 文章的主旨,而且是Levy舉辦該活動的主題,卻又宣告他是與VFP7 和 VFP8 的 EULA 衝突,不允許公開展示.
+
-
2.Deploying custom VFP applications on Linux workstations
+
-
VFP 如同大家所知的,AP都是要與 runtime 一同包裝,並安裝到客戶那兒.以前很簡單,都只要幾個DLL檔案就行了,現在,最後一版的VFP,都是以MSM 形式給Installer tool使用.只有這些 MSM 檔案列在 REDIST.TXT 中,卻沒有明確的指定是哪些VFP DLL 檔案.
+
-
所以只要用這個方法是不是就可以避免了呢?
+
-
第一個問題是,如果發布自訂的VFP DLLs 在 EULA 裡是不被允許的,那麼
+
-
(1)如果不用 Windows Installer 技術的話,那麼市場上還有許多不使用 Windows Installer 技術的安裝工具,這些工具是不是就與 VFP EULA 衝突了呢??
+
-
(2)為什麼從6.0 到7.0,這樣的一個改變,卻沒有任何公告??就正常來說,一個產品的改變應該會被公告於 "Read Me" 或 "What's New" 檔案中.可是這卻被放到\nEULA 中,而缺乏任何說明.
+
-
ok,假設VFP EULA 禁止散佈 VFP DLLs,只能使用 Windows Installer 技術.
+
-
總之,看起來,Microsoft 就是想把它們的應用程式綁在他們的 OS 上.
+
-
3.The Business Issues
+
-
Microsoft 之所以需要 VFP, FoxBase 和 FoxPro, 主要就是為了要打擊Desktop database市場上其他的對手.那個時候,幾乎所有產品都不需要 runtime license,就這樣,一直延續到現在.Microsoft長期忽略 VFP,大概與Business Model有關,他們寧可開發者用VB 和 SQL Server,這樣就可從 SQL Server 那兒收到 licenses 費用.
+
-
VFP 可以在 Linux 上執行是非常吸引人的,想想一套便宜(或免費)的作業系統加上一個不貴又有威力的開發工具,和一個便宜(或免費)的後端資料庫,是多麼的不錯.很簡單的可以看出來為什麼 Microsoft 要試著去對抗他,並強加了和以往不一樣的的授權限制.
+
-
 
+
-
====參考網址====
+
-
安裝:
+
-
*http://www.pinpub.com/FT/FTmag.nsf/0/843B563D8FB169F485256D6700710C3A
+
-
*http://www.paulmcnett.com/vfp/vfp7wine.html(安裝)
+
-
*http://www.paulmcnett.com/vfp/wine/foxtalk1.html
+
-
相關資料收集:
+
-
*http://fox.wikis.com/wc.dll?Wiki~VFPandLinux~VFP
+
-
*http://www.associateddata.co.uk/VFPLinux.htm
+
-
微軟的恫嚇與EULA的相關討論:
+
-
*http://www.linuxworld.com/story/32665.htm
+
-
*http://mail.linux.ie/pipermail/ilug/2003-April/002197.html
+
-
*http://www.linuxtransfer.com/h/misc_vfplinuxjackofhearts.htm
+
-
*http://www.linuxjournal.com/article.php?sid=6869&mode=thread&order=0
+
-
Wine 官方網站 Guide:
+
-
*http://www.winehq.com/Docs/wine-user/
+
-
Wine 應用程式相容性:
+
-
*http://appdb.winehq.com/
+
-
*http://frankscorner.org/
+
-
Wine 所收錄的 VFP Profile:
+
-
*http://appdb.winehq.com/appview.php?appId=296;PHPSESSID=9e9d479fa55fb6c759ad092fd5aa3184
+
-
 
+
-
====螢幕快照====
+
-
[[圖像:01-Startup.png]]
+
-
[[圖像:02-Form_Designer.png]]
+
-
[[圖像:03-Class_Designer.png]]
+
-
[[圖像:04-Report_Designer.png]]
+
-
[[圖像:05-Modify_command.png]]
+
-
[[圖像:06-Database_Designer.png]]
+
-
[[圖像:07-Menu_Designer.png]]
+
-
[[圖像:08-Build.png]]
+
-
[[圖像:09-Tastrade-Startup.png]]
+
-
[[圖像:10-Tastrade-ReportPreview.png]]
+
-
[[圖像:11-Tastrade_running.png]]
+
-
[[圖像:12-mms_with_odbc.png]]
+
-
[[圖像:13-mms_with_odbc_query.png]]
+
-
[[圖像:14-Regedit.png]]
+
-
[[圖像:15-DLLs.png]]
+
-
[[圖像:16-wine_apps.png]]
+
-
[[圖像:17-winecfg-configuration_tool.png]]
+
-
[[圖像:18-install_winzip.png]]
+
-
[[圖像:19-winzip.png]]
+
-
[[圖像:20-uninstaller.png]]
+
-
 
+
-
====其他連結====
+
-
或可直接連接至此 http://home.kimo.com.tw/h94u04bp6/archives/000103.html
+
-
[http://www.hg-fix.com/ 数据恢复]
+
-
[http://www.hg-fix.com/ 硬盘数据恢复]
+
-
[http://www.hg-fix.com/ 磁带数据恢复]
+
-
[http://www.hg-fix.com/ raid数据恢复]
+
-
[http://www.hg-fix.com/ 磁盘阵列数据恢复]
+
-
[http://www.hg-fix.com/diskrecover.htm 数据恢复]
+
-
[http://www.hg-fix.com/taperecover.htm 数据恢复]
+
-
[http://www.hg-fix.com/raidrecover.htm 数据恢复]
+
-
[http://www.hg-fix.com/ 数据修复]
+
-
[http://www.hg-fix.com/ 硬盘数据修复]
+
-
[http://www.hg-fix.com/ 磁带数据修复]
+
-
[http://www.hg-fix.com/ raid数据修复]
+
-
[http://www.hg-fix.com/diskrecover.htm 数据修复]
+
-
[http://www.hg-fix.com/raidrecover.htm 数据修复]
+
-
[http://www.hg-fix.com/taperecover.htm 数据修复]
+
-
[http://www.hg-fix.com/ 磁盘阵列数据修复]
+

在2005年4月3日 (日) 03:24所做的修訂版本

ICP代办 ICP ICP办理 ICP证 北京ICP ICP经营许可证 申请ICP经营许可证 http://www.bjicp.com/images/braintemp_1.jpg{nid GFY}


ICP代办 ICP ICP办理 ICP证 北京ICP ICP经营许可证 申请ICP经营许可证 http://www.bjicp.net/images/logo.jpg {nid GFY}

ICP代办 ICP ICP办理 ICP证 北京ICP ICP经营许可证 申请ICP经营许可证 http://www.bjicp.org/image/s2.gif{nid GFY}