|
|
第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/ 磁盘阵列数据修复]
| + | |