程式相關
財金相關
C:\windows\system32
之下主要的DLL檔的功能,再自己重新implement這些DLL檔,使得所有的Windows程式在執行時call到這些DLL檔時,背後能轉換成POSIX的函式庫,來完成DLL檔原本的工作!!而這樣子比起虛擬機來講,就能少掉虛擬機的那一層虛擬硬體層的overhead了!.Net Framework
和Visual C++可轉散發套件
時,Wine選擇不自己implement這二者的DLL檔,而是讓使用者自己去安裝Windows版的.Net Framework
和Visual C++可轉散發套件
的安裝檔!我想這是因為這二者的DLL檔都比較上層,它們的功能全部都是透過去call更底層的KERNEL32
和ntdll
之類的DLL檔來完成自己的功能!而更底層的DLL檔Wine都已經自己implement完並且轉換成POSIX了!winhttp
和wininet
,它們並沒有那麼底層,而且它們也是透過call更底層的DLL檔來完成它們自己的功能的!所以像這種DLL檔我們也有機會選擇安裝Windows原生的安裝檔來把Wine版的winhttp
和wininet
換掉,改成Windows版的winhttp
和wininet
!而這就是DLL檔所謂的builtin (內建)
和native (原生)
的差別了!builtin (內建)
是指Wine版的DLL,而native (原生)
是指Windows版的DLL!(builtin
和native
意義太相近了!記法是:Windows原生DLL檔
很明顯就是在指Windows版的DLL檔!)winecfg
指令可以設定已經安裝過Windows版的DLL檔,使用者要選擇用Wine版的或Windows版的、或是誰的優先於另一個人的、或是不要發揮功用之類的。
winecfg
還可以設定Wine目前虛擬的Windows版本是多少,不過實際設定之後感覺作用不大。~/.wine
裡!進到~/.wine/drive_c/
裡,你可以發現精簡版的Windows C槽的資料夾都在這裡!你可以:
wine putty.exe
來從無到有生出一個~/.wine
資料夾後,再執行putty.exe
在XWindow下秀出putty!wineboot
來從無到有生出一個~/.wine
資料夾!但不會執行任何程式。(強烈建議先這樣做!!!)WINEPREFIX=~/.wine32 WINEARCH=win32 wineboot
來從無到有生出一個~/.wine32
資料夾!而且~/.wine32
裡是是32位元的Windows環境!(雖然這只對64位元版的Wine有差而已)WINEPREFIX=~/.wine32 WINEARCH=win32
麻煩的話,可以先export
一次變數,之後就不用再每次都打這麼長一串了!$ export WINEPREFIX=~/.wine32
$ export WINEARCH=win32
export
了!(強烈建議!!!)winetricks
可以輕鬆地下載適合的安裝檔並且只挑其中特定的DLL檔出來蓋掉Wine版的DLL檔。此外winetricks
還可以方便地安裝.Net Framework
和Visual C++可轉散發套件
,而近來的wiretricks
更可以直接幫你安裝Windows遊戲或Office等!真的狂!winetricks
的bleeding edge版!而不能用apt install
安裝!apt install
的是2014年版的winetricks
!很多東西下載不到,而且安裝檔的相容性也沒有顧到!winetricks
:$ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
$ chmod +x ./winetricks
winetricks
:$ winetricks list-all (列出所有可以安裝的套件)
$ winetricks list-installed (列出所有已經安裝的套件)
$ winetricks vcrun2010 (安裝VC++2010的可轉散發套件)
$ winetricks vcrun2015 (安裝VC++2015的可轉散發套件)
$ winetricks dotnet40 (安裝.Net Framework 4.0)
$ winetricks winhttp (安裝Windows 2000 SP4版的winhttp.dll,測試後沒有用故不會裝)
$ winetricks wininet (安裝Windows 7 SP1版的wininet.dll,測試後沒有用故不會裝)
$ winetricks wininet_win2k (安裝Windows 2000 SP4版的wininet.dll,測試後沒有用故不會裝)
$ winetricks win7 (設定.wine的環境為Windows 7,測試後沒有感覺差別故不會裝)
$ winetricks winxp (設定.wine的環境為Windows XP,測試後沒有感覺差別故不會裝)
wine putty.exe
時DLL層的執行細節的話,可以使用WINEDEBUG
變數來印出更多細節!(WINEDEBUG
官方說明)$ WINEDEBUG=+relay,+seh,+tid wine ./putty.exe > ~/putty.log 2>&1
wine control
可以叫出控制台!不過只有三個圖示而已,看得出來這個控制台是Wine自製的!然後要匯入根憑證檔要來這個控制台匯入,而不是執行wine ./iexplorer.exe
打開IE5然後找選項匯入!
wine uninstaller
可以叫出剛剛控制台三個圖示之一的解除安裝管理員!裡面可以看到winetricks
裝過的套件!不曉得它解安裝winetricks
裝過的套件之後,執行winetricks list-installed
會不會還看得到該套件,以及該套件是否還有作用。(我沒試那麼深入)GTA 5
也可以執行了!(GTA 5
是Wine支援度最高級的遊戲,是白金級
的支援程度!) 所以幸運的是,在連日來的熬夜之下,我已經確定群益的API SKCOM.dll
也可以利用Wine在Linux上執行了!apt install
來安裝Wine!一樣也是為了避免Ubuntu 32位元的函式庫我裝得不夠完整!Wine的configure
非常強大!它會在執行完後歸納出系統會因為缺少什麼函式庫的開發套件而會有什麼功能執行不到!(仔細想想,我在用原始碼安裝Wine之後,fixme
出現的次數變少非常非常多!原來fixme
不一定是提醒Wine的開發者而已!)$ sudo apt update; apt upgrade
$ sudo apt install openssh-client openssh-server vim python-software-properties software-properties-common gcc g++ vim subversion automake autoconf perl patch build-essential libtool doxygen bison flex zlib1g-dev gperf tofrodos wget curl screen git samba vsftpd bash-completion ftp colordiff libkrb5-dev rar unrar unzip vnstat libssl-dev
$ mkdir -pv /root/packages ; cd /root/packages
$ time git clone https://github.com/wine-mirror/wine
./configure
$ cd ./wine
$ time ./configure
checking for X... no
configure: error: X development files not found. Wine will be built
without X support, which probably isn't what you want. You will need
to install development packages of Xlib at the very least.
Use the --without-x option if you really want this.
configure: MinGW compiler not found, cross-compiling PE files won't be supported.
configure: libhal development files not found, no legacy dynamic device support.
configure: libSDL2 development files not found, SDL2 won't be supported.
configure: libFAudio development files not found, XAudio2 won't be supported.
configure: libvulkan and libMoltenVK development files not found, Vulkan won't be supported.
configure: vkd3d development files not found (or too old), Direct3D 12 won't be supported.
configure: WARNING: No OpenGL library found on this system.
OpenGL and Direct3D won't be supported.
configure: WARNING: libxml2 development files not found (or too old), XML won't be supported.
configure: WARNING: libxslt development files not found, xslt won't be supported.
configure: WARNING: libgnutls development files not found, no schannel support.
configure: WARNING: libjpeg development files not found, JPEG won't be supported.
configure: WARNING: No sound system was found. Windows applications will be silent.
configure: Finished. Do 'make' to compile Wine.
$ time apt install gnome-devel libx11-dev flex bison qt4-qmake libjpeg-dev libxslt1-dev libglu1-mesa-dev freeglut3-dev prelink libasound2-dev libfreetype6-dev libpng-dev libxml2-dev libxrender-dev libgl1-mesa-dev libgphoto2-dev libmpg123-dev libtiff-dev libpulse-dev liblcms2-dev libcapi20-dev libldap-dev libopenal-dev libv4l-dev libsane-dev libcups2-dev libgsm1-dev libosmesa6-dev libgnutls28-dev libpcap0.8-dev oss4-dev libcdk5-dev libgstreamer-plugins-base1.0-dev libarrayfire-opencl-dev
$ time apt install libsdl2-dev libvulkan-dev
$ apt clean
./configure
一次!$ time ./configure
configure: MinGW compiler not found, cross-compiling PE files won't be supported.
configure: libhal development files not found, no legacy dynamic device support.
configure: libFAudio development files not found, XAudio2 won't be supported.
configure: vkd3d development files not found (or too old), Direct3D 12 won't be supported.
$ time make
$ time make install
winetricks
!直接從github wget下來就可以用了!$ mkdir -pv /opt/bin ; cd /opt/bin
$ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
$ chmod +x ./winetricks
$ ./winetricks -V
20190615-next - sha256sum: 47304e177f259d6f9c05af01ab42c06531fd8a9716e2751d2fadcd664130feea
winhttp
win7版有bug,所以winetricks
目前不支援!詳情請直接打開winetricks
找到安裝winhttp
的那一行!