Marcus Meissner
ec698cd7c5
- Support for multiple icon sizes in winemenubuilder. - Improvements to the help browser. - Initial stab at DOSBox integration. - Various MSI fixes. - Some fixes to the Wine debugger. - Various bug fixes. - updated winetricks - Updated to 1.3.11 development snapshot - PO files now used for translations. - Various JavaScript improvements. - Some fixes to the Wine debugger. - Translation updates. - Various bug fixes. - moved development tools into -devel package OBS-URL: https://build.opensuse.org/package/show/Emulators/wine?expand=0&rev=80
5303 lines
198 KiB
Bash
5303 lines
198 KiB
Bash
#!/bin/sh
|
|
# Quick and dirty script to download and install various
|
|
# redistributable runtime libraries
|
|
#
|
|
# Current maintainers: Austin English, Dan Kegel
|
|
# Copyright 2007, 2008, 2009, 2010 Google (Dan Kegel, dank@kegel.com)
|
|
# Copyright 2008, 2009, 2010 Austin English (austinenglish@gmail.com)
|
|
# License: LGPL (for compatibility with winehq)
|
|
# Thanks to Detlef Riekenberg for lots of updates
|
|
# Thanks to Saulius Krasuckas for corrections and suggestions
|
|
# Thanks to Erik Inge Bolsø for several patches
|
|
# Thanks to Hugh Perkins for the directplay patch
|
|
# Please report problems at http://code.google.com/p/winezeug/issues
|
|
# See also http://wiki.winehq.org/winetricks
|
|
#
|
|
# Note to contributors: please avoid gnu extensions in this shell script,
|
|
# as it has to run on MacOSX and Solaris, too. A good book on the topic is
|
|
# "Portable Shell Programming" by Bruce Blinn, ISBN: 0-13-451494-7
|
|
|
|
#---- Constants -------------------------------------------------
|
|
|
|
# Name of this version of winetricks (YYYYMMDD)
|
|
VERSION=20110123
|
|
|
|
#---- Functions -------------------------------------------------
|
|
|
|
# Detect which sudo to use
|
|
detect_sudo() {
|
|
SUDO=sudo
|
|
test "$GUI" = 1 || return
|
|
if test x"$DISPLAY" != x""
|
|
then
|
|
if test -x "`which gksudo 2>/dev/null`"
|
|
then
|
|
SUDO=gksudo
|
|
elif test -x "`which kdesudo 2>/dev/null`"
|
|
then
|
|
SUDO=kdesudo
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Detect which menu program to use
|
|
# Thereafter, use $MENU rather than the literal program name
|
|
# to avoid rpmbuild pulling all the alternate menu programs
|
|
# as dependencies. (Favor for etersoft.)
|
|
detect_menu() {
|
|
# TODO: add 'dialog'
|
|
MENU=xmessage
|
|
if test -x "`which zenity 2>/dev/null`"
|
|
then
|
|
MENU=zenity
|
|
elif test -x "`which kdialog 2>/dev/null`"
|
|
then
|
|
MENU=kdialog
|
|
fi
|
|
}
|
|
|
|
w_warn() {
|
|
echo "------------------------------------------------------"
|
|
echo "$@"
|
|
echo "------------------------------------------------------"
|
|
|
|
test "$GUI" = 1 || return 0
|
|
|
|
# For some reason, nulls were showing up in $@?!, causing truncated output in zenity
|
|
msg="`echo $@ | tr '\000' ' '`"
|
|
case $MENU in
|
|
*zenity) $MENU --error --title=Winetricks --text="$msg" --no-wrap;;
|
|
*kdialog) $MENU --title Winetricks --error "$msg" ;;
|
|
*xmessage) $MENU -title Winetricks -center " Error: $msg " ;;
|
|
esac
|
|
}
|
|
|
|
w_die() {
|
|
w_warn "$@"
|
|
|
|
exit 1
|
|
}
|
|
|
|
# Abort if user doesn't own the given directory (or its parent, if it doesn't exist yet)
|
|
die_if_user_not_dirowner() {
|
|
if test -d "$1"
|
|
then
|
|
checkdir="$1"
|
|
else
|
|
# fixme: quoting problem?
|
|
checkdir=`dirname "$1"`
|
|
fi
|
|
nuser=`id -u`
|
|
nowner=`ls -l -n -d -L "$checkdir" | awk '{print $3}'`
|
|
if test x$nuser != x$nowner
|
|
then
|
|
w_die "You (`id -un`) don't own $checkdir. Don't run winetricks as another user!"
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
usage() {
|
|
set +x
|
|
# WARNING: do not use single quote in any package description; that breaks the gui menu.
|
|
echo "Usage: $0 [options] package [package] ..."
|
|
echo "This script can help you prepare your system for Windows applications"
|
|
echo "that mistakenly assume all users' systems have all the needed"
|
|
echo "redistributable runtime libraries or fonts."
|
|
echo "Some options require the Linux 'cabextract' program."
|
|
echo ""
|
|
echo "Options:"
|
|
echo " -q quiet. You must have already agreed to the EULAs."
|
|
echo " -v verbose"
|
|
echo " -V display Version"
|
|
echo "Packages:"
|
|
echo " 7zip 7-zip file archiver"
|
|
echo " adobeair Adobe AIR runtime"
|
|
echo " amstream MS amstream.dll"
|
|
echo " art2kmin MS Access 2007 runtime"
|
|
echo " atmlib Adobe Type Manager. Needed for Adobe CS4"
|
|
echo " autohotkey Autohotkey (open source gui scripting language)"
|
|
echo " baekmuk Baekmuk Korean fonts"
|
|
echo " cmake CMake, the cross-platform, open-source build system"
|
|
echo " colorprofile Standard RGB color profile"
|
|
echo " comctl32 MS common controls 5.80"
|
|
echo " comctl32.ocx MS comctl32.ocx and mscomctl.ocx, comctl32 wrappers for VB6"
|
|
echo " comdlg32.ocx MS comdlg32.ocx for VB6"
|
|
echo " controlpad MS ActiveX Control Pad"
|
|
echo " corefonts MS Arial, Courier, Times fonts"
|
|
echo " crypt32 MS crypt32.dl"
|
|
echo " cygwin Unix apps for Windows (needed by some build scripts)"
|
|
echo " d3dx9 MS d3dx9_??.dll (from DirectX 9 user redistributable)"
|
|
echo " d3dx9_26 MS d3dx9_26.dll"
|
|
echo " d3dx9_28 MS d3dx9_28.dll"
|
|
echo " d3dx9_31 MS d3dx9_31.dll"
|
|
echo " d3dx9_35 MS d3dx9_35.dll"
|
|
echo " d3dx9_36 MS d3dx9_36.dll"
|
|
echo " d3dx9_42 MS d3dx9_42.dll"
|
|
echo " d3dx10 MS d3dx10_??.dll (from DirectX user redistributable)"
|
|
echo " d3dxof MS d3dxof.dll (from DirectX user redistributable)"
|
|
echo " devenum MS devenum.dll (from DirectX 9 user redistributable)"
|
|
echo " dinput8 MS dinput8.dll (from DirectX 9 user redistributable)"
|
|
echo " dirac the Dirac directshow filter"
|
|
echo " directmusic MS DirectMusic (from DirectX 9 user redistributable)"
|
|
echo " directplay MS DirectPlay (from DirectX 9 user redistributable)"
|
|
echo " directx9 MS DirectX 9 user redistributable (not recommended! use d3dx9 instead)"
|
|
echo " directx9-beta MS DirectX 9 user redistributable - beta verb (not recommended! use d3dx9 instead)"
|
|
echo " divx divx video codec"
|
|
echo " dmsynth MS dmsynth.dll (midi sythesizer from DirectX 9 user redistributable)"
|
|
echo " dotnet11 MS .NET 1.1 (requires Windows license, but does not check for one)"
|
|
# Doesn't work yet, don't make it public
|
|
# echo " dotnet11sdk MS .NET Framework SDK Version 1.1 (requires Windows license, but does not check for one; may not work yet)"
|
|
echo " dotnet20 MS .NET 2.0 (requires Windows license, but does not check for one)"
|
|
# Doesn't work yet, don't make it public
|
|
# echo " dotnet20sdk MS .NET Framework SDK Version 2.0 (requires Windows license, but does not check for one, may not work yet)"
|
|
# echo " dotnet20sp2 MS .NET 2.0 sp2 (broken in wine)"
|
|
echo " dotnet30 MS .NET 3.0 (requires Windows license, but does not check for one, might not work yet)"
|
|
echo " droid Droid fonts (on LCD, looks better with fontsmooth-rgb)"
|
|
echo " dsound MS dsound.dll (from DirectX 9 user redistributable)"
|
|
echo " dxsdk_nov2006 DirectX Software Development Kit, November 2006 version"
|
|
echo " eufonts Updated fonts for Romanian and Bulgarian"
|
|
echo " fakechinese Creates aliases for Chinese fonts using WenQuanYi fonts"
|
|
echo " fakejapanese Creates aliases for Japanese fonts using Takao fonts"
|
|
echo " fakekorean Creates aliases for Korean fonts using Baekmuk fonts"
|
|
echo " ffdshow ffdshow video codecs"
|
|
echo " firefox Firefox web browser"
|
|
echo " flash Adobe Flash Player ActiveX and firefox plugins"
|
|
echo " fm20 MS Forms 2.0 Object Library"
|
|
echo " fontfix Fix bad fonts which cause crash in some apps (e.g. .net)."
|
|
echo " fontsmooth-bgr Enables subpixel smoothing for BGR LCDs"
|
|
echo " fontsmooth-disable Disables font smoothing"
|
|
echo " fontsmooth-gray Enables grayscale font smoothing"
|
|
echo " fontsmooth-rgb Enables subpixel smoothing for RGB LCDs"
|
|
echo " gdiplus MS gdiplus.dll"
|
|
echo " gecko-dbg The HTML rendering Engine (Mozilla), with debugging symbols"
|
|
echo " gecko The HTML rendering Engine (Mozilla)"
|
|
echo " gfw MS Game For Windows Live (xlive.dll)"
|
|
echo " glut The glut utility library"
|
|
echo " hosts Adds empty C:\windows\system32\drivers\etc\{hosts,services} files"
|
|
echo " icodecs Intel Indeo codecs"
|
|
echo " ie6 Microsoft Internet Explorer 6.0"
|
|
echo " ie7 Microsoft Internet Explorer 7.0"
|
|
echo " ie8 Microsoft Internet Explorer 8.0"
|
|
echo " jet40 MS Jet 4.0 Service Pack 8"
|
|
echo " kde KDE for Windows installer"
|
|
echo " l3codecx MPEG Layer-3 Audio Codec for Microsoft DirectShow"
|
|
echo " liberation Red Hat Liberation fonts (Sans, Serif, Mono)"
|
|
echo " lucida MS Lucida Console font"
|
|
echo " mdac25 MS MDAC 2.5: Microsoft ODBC drivers, etc."
|
|
echo " mdac27 MS MDAC 2.7"
|
|
echo " mdac28 MS MDAC 2.8"
|
|
echo " mfc40 MS mfc40 (Microsoft Foundation Classes from Visual C++ 4)"
|
|
echo " mfc42 MS mfc42 (same as vcrun6 below)"
|
|
echo " mingw-gdb GDB for MinGW"
|
|
echo " mingw Minimalist GNU for Windows, including GCC for Windows!"
|
|
echo " mono26 mono-2.6"
|
|
echo " mono28 mono-2.8"
|
|
echo " mozillabuild Mozilla build environment"
|
|
echo " mpc Media Player Classic"
|
|
echo " mshflxgd MS Hierarchical FlexGrid Control"
|
|
echo " msi2 MS Windows Installer 2.0"
|
|
echo " msls31 MS Line Services 3.1 (needed by native riched?)"
|
|
echo " msmask MS Masked Edit Control"
|
|
echo " mspaint MS Paint (gotta draw stick figures somehow...)"
|
|
echo " msscript MS Windows Script Control"
|
|
echo " msxml3 MS XML Core Services 3.0"
|
|
echo " msxml4 MS XML Core Services 4.0"
|
|
echo " msxml6 MS XML Core Services 6.0"
|
|
echo " ogg ogg filters/codecs: flac, theora, speex, vorbis, schroedinger"
|
|
echo " ole2 MS 16 bit OLE"
|
|
echo " opensymbol OpenSymbol fonts from OpenOffice.org (replacement for Wingdings)"
|
|
echo " openwatcom Open Watcom C/C++ compiler (can compile win16 code!)"
|
|
echo " pdh MS pdh.dll (Performance Data Helper)"
|
|
echo " physx NVIDIA/AGEIA PhysX runtime"
|
|
echo " psdk2003 MS Platform SDK 2003"
|
|
echo " psdkvista MS Vista SDK (does not install yet)"
|
|
echo " psdkwin7 MS Windows 7 SDK (installing just headers and c++ compiler works)"
|
|
echo " python26 Python 2.6.2 (and pywin32)"
|
|
echo " python-comtypes Python 0.6.1-1 comtypes package"
|
|
echo " quartz quartz.dll (from Directx 9 user redistributable)"
|
|
echo " quicktime72 Apple Quicktime 7.2"
|
|
echo " quicktime76 Apple Quicktime 7.6"
|
|
echo " riched20 MS RichEdit Control, riched20 and riched32"
|
|
echo " riched30 MS RichEdit Control, riched30"
|
|
echo " richtx32 MS Rich TextBox Control 6.0"
|
|
echo " safari Apple Safari web browser"
|
|
echo " secur32 MS secur32"
|
|
echo " shockwave Adobe Shockwave Player"
|
|
echo " steam Steam Client App from Valve"
|
|
echo " tahoma MS Tahoma font (not part of corefonts)"
|
|
echo " takao Takao Japanese fonts"
|
|
echo " unifont Unifont alternative to Arial Unicode MS"
|
|
echo " usp10 MS usp10.dll (Uniscribe)"
|
|
echo " utorrent uTorrent"
|
|
echo " vb2run MS Visual Basic 2 runtime"
|
|
echo " vb3run MS Visual Basic 3 runtime"
|
|
echo " vb4run MS Visual Basic 4 runtime"
|
|
echo " vb5run MS Visual Basic 5 runtime"
|
|
echo " vb6run MS Visual Basic 6 Service Pack 6 runtime"
|
|
echo " vc2005express MS Visual C++ 2005 Express"
|
|
echo " vc2005expresssp1 MS Visual C++ 2005 Express SP1 (does not work yet)"
|
|
echo " vc2005sp1 MS Visual C++ 2005 Service Pack 1 and ATL fix (install trial 1st)"
|
|
echo " vc2005hotfix MS Visual C++ 2005 hotfixes (install sp1 1st)"
|
|
echo " vc2005trial MS Visual C++ 2005 Trial"
|
|
echo " vcrun2003 MS Visual C++ 2003 libraries (mfc71,msvcp71,msvcr71)"
|
|
echo " vcrun2005 MS Visual C++ 2005 sp1 libraries (mfc80,msvcp80,msvcr80)"
|
|
echo " vcrun2008 MS Visual C++ 2008 libraries (mfc90,msvcp90,msvcr90)"
|
|
echo " vcrun2010 MS Visual C++ 2010 libraries (mfc100,msvcp100,msvcr100)"
|
|
echo " vcrun6 MS Visual C++ 6 sp4 libraries (mfc42, msvcp60, msvcrt)"
|
|
echo " vcrun6sp6 MS Visual C++ 6 sp6 libraries (mfc42, msvcp60, msvcrt; 64 MB download)"
|
|
echo " vjrun20 MS Visual J# 2.0 SE libraries (requires dotnet20)"
|
|
echo " vlc VLC media player"
|
|
echo " wenquanyi WenQuanYi CJK font (on LCD looks better with fontsmooth-rgb)"
|
|
echo " windowscodecs MS Windows Imaging Component"
|
|
echo " winhttp MS winhttp.dll (requires Windows license, but does not check for one)"
|
|
echo " wininet MS wininet.dll (requires Windows license, but does not check for one)"
|
|
echo " wme9 MS Windows Media Encoder 9 (requires Windows license, but does not check for one)"
|
|
echo " wmi Windows Management Instrumentation core 1.5 (requires Windows license, but does not check for one)"
|
|
echo " wmp10 MS Windows Media Player 10 (requires Windows license, but does not check for one)"
|
|
echo " wmp9 MS Windows Media Player 9 (requires Windows license, but does not check for one)"
|
|
echo " wsh56js MS Windows scripting 5.6, jscript only, no cscript"
|
|
echo " wsh56 MS Windows Scripting Host 5.6"
|
|
echo " wsh56vb MS Windows scripting 5.6, vbscript only, no cscript"
|
|
echo " xact MS XACT Engine (x3daudio?_?.dll, xactengine?_?.dll)"
|
|
echo " xinput MS XInput (Xbox controller support, xinput?_?.dll)"
|
|
echo " xmllite MS xmllite dll"
|
|
echo " xvid xvid video codec"
|
|
echo "Pseudopackages:"
|
|
echo " alldlls=builtin Force use of builtin dlls (even if loaded with absolute path) (except for msvcp80 and d3dx9_*)"
|
|
echo " alldlls=default Remove all DLL overrides"
|
|
echo " allfonts All listed fonts and aliases (corefonts, droid, eufonts, liberation, lucida, opensymbol, tahoma, cjkfonts)"
|
|
echo " allcodecs All listed codecs (xvid, ffdshow)"
|
|
echo " cjkfonts All Chinese, Japanese, Korean fonts and aliases (fakechinese, fakejapanese, fakekorean, unifont)"
|
|
echo " ddr=gdi Set DirectDrawRenderer to GDI (default)"
|
|
echo " ddr=opengl Set DirectDrawRenderer to OpenGL"
|
|
echo " dsoundbug9612 Use DirectSound MaxShadowSize=0 workaround for bug #9612"
|
|
echo " forcemono Force using mono instead of .Net (for debugging)"
|
|
echo " glsl-disable Disable GLSL use by Wine Direct3D"
|
|
echo " glsl-enable Enable GLSL use by Wine Direct3D (default)"
|
|
echo " heapcheck Enable heap checking"
|
|
echo " multisampling=enabled Enable Direct3D multisampling"
|
|
echo " multisampling=disabled Disable Direct3D multisampling (default)"
|
|
echo " native_mdac Override odbc32, odbccp32 and oledb32"
|
|
echo " native_oleaut32 Override oleaut32"
|
|
echo " nocrashdialog Disable the graphical crash dialog"
|
|
echo " orm=backbuffer Registry tweak: OffscreenRenderingMode=backbuffer"
|
|
echo " orm=fbo Registry tweak: OffscreenRenderingMode=fbo (default)"
|
|
echo " rtlm=auto Set RenderTargetLockMode to auto (default)"
|
|
echo " rtlm=disabled Set RenderTargetLockMode to disabled"
|
|
echo " rtlm=readdraw Set RenderTargetLockMode to readdraw"
|
|
echo " rtlm=readtex Set RenderTargetLockMode to readtex"
|
|
echo " rtlm=texdraw Set RenderTargetLockMode to texdraw"
|
|
echo " rtlm=textex Set RenderTargetLockMode to textex"
|
|
echo " sandbox Sandbox the wineprefix - remove links to ~"
|
|
echo " sound=alsa Set sound driver to ALSA"
|
|
echo " sound=coreaudio Set sound driver to CoreAudio"
|
|
echo " sound=esd Set sound driver to Esound"
|
|
echo " sound=jack Set sound driver to Jack"
|
|
echo " sound=nas Set sound driver to Nas"
|
|
echo " sound=oss Set sound driver to OSS"
|
|
echo " sound=disabled Disable sound"
|
|
echo " strictdrawordering=enabled Enable StrictDrawOrdering (default)"
|
|
echo " strictdrawordering=disabled Disable StrictDrawOrdering"
|
|
echo " nt40 Set windows version to nt40"
|
|
echo " vd=off Disable virtual desktop"
|
|
echo " vd=1024x768 Enable virtual desktop, set size to 1024x768"
|
|
echo " win31 Set windows version to Windows 3.1"
|
|
echo " win98 Set windows version to Windows 98"
|
|
echo " win2k Set windows version to Windows 2000"
|
|
echo " winxp Set windows version to Windows XP"
|
|
echo " vista Set windows version to Windows Vista"
|
|
echo " win7 Set windows version to Windows 7"
|
|
echo " winver= Set windows version to default (winxp)"
|
|
echo " volnum Rename drive_c to harddiskvolume0 (needed by some installers)"
|
|
echo " mwo=force Set MouseWarpOverride to force (needed by some games)"
|
|
echo " mwo=enabled Set MouseWarpOverride to enabled (default)"
|
|
echo " mwo=disable Set MouseWarpOverride to disable"
|
|
echo " npm-repack Set NonPower2Mode to repack"
|
|
echo " psm=on Set PixelShaderMode to enabled"
|
|
echo " psm=off Set PixelShaderMode to disabled"
|
|
echo " vsm-hard Set VertexShaderMode to hardware"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
# Trivial GUI just to handle case where user tries running without commandline
|
|
|
|
kdialog_showmenu() {
|
|
title="$1"
|
|
shift
|
|
text="$1"
|
|
shift
|
|
col1name="$1"
|
|
shift
|
|
col2name="$1"
|
|
shift
|
|
while test $# -gt 0
|
|
do
|
|
args="$args $1 $1 off"
|
|
shift
|
|
done
|
|
$MENU --title "$title" --separate-output --checklist "$text" $args
|
|
}
|
|
|
|
xmessage_showmenu() {
|
|
title="$1"
|
|
shift
|
|
text="$1"
|
|
shift
|
|
col1name="$1"
|
|
shift
|
|
col2name="$1"
|
|
shift
|
|
if test $# -gt 0
|
|
then
|
|
args="$1"
|
|
shift
|
|
fi
|
|
while test $# -gt 0
|
|
do
|
|
args="$args,$1"
|
|
shift
|
|
done
|
|
(echo "$title"; echo ""; echo "$text") | \
|
|
$MENU -print -file - -buttons "Cancel,$args" | sed 's/Cancel//'
|
|
}
|
|
|
|
showmenu()
|
|
{
|
|
case $MENU in
|
|
zenity)
|
|
echo "zenity --title 'Winetricks' --text 'Select packages to install' --list --checklist --column '' --column Package --column Description --height 440 --width 600 \\" > "$W_TMP"/zenity.sh
|
|
usage | grep '^ [0-9a-z]' | sed 's/^ \([^ ]*\) *\(.*\)/FALSE "\1" '"'\2'/" | sed 's/$/ \\/' >> "$W_TMP"/zenity.sh
|
|
todo="`sh "$W_TMP"/zenity.sh | tr '|' ' '`"
|
|
;;
|
|
kdialog)
|
|
packages=`usage | awk '/^ [0-9a-z]/ {print $1}'`
|
|
todo="`kdialog_showmenu "winetricks" "Select a package to install" "Install?" "Package" $packages`"
|
|
;;
|
|
xmessage)
|
|
packages=`usage | awk '/^ [0-9a-z]/ {print $1}'`
|
|
todo="`xmessage_showmenu "winetricks" "Select a package to install" "Install?" "Package" $packages`"
|
|
;;
|
|
esac
|
|
|
|
if test "$todo"x = x
|
|
then
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
#----- Helpers ------------------------------------------------
|
|
|
|
GUI=0
|
|
case x"$1" in
|
|
x) GUI=1 ;;
|
|
x-h|x--help|xhelp) usage ; exit 1 ;;
|
|
x-V|x--version|xversion) echo "Winetricks version $VERSION. (C) 2007-2010 Dan Kegel et al. LGPL." ; exit 0;;
|
|
esac
|
|
|
|
early_wine()
|
|
{
|
|
# The sed works around http://bugs.winehq.org/show_bug.cgi?id=25838
|
|
# which unfortunately got released in wine-1.3.12
|
|
WINEDEBUG=-all WINEDLLOVERRIDES=mshtml= $WINE "$@" | sed 's/.*1h.=//'
|
|
}
|
|
|
|
case "$OS" in
|
|
"Windows_NT")
|
|
# Cheezy fix for getting rid of double slashes when running cygwin in wine
|
|
case $HOME in
|
|
/) HOME="" ;;
|
|
esac
|
|
WINE=""
|
|
WINEPREFIX=${WINEPREFIX:-$HOME/.wine}
|
|
W_DRIVE_C="C:/"
|
|
XXXPATH=cygpath
|
|
;;
|
|
*)
|
|
WINE=${WINE:-wine}
|
|
if [ ! -x "`which "$WINE" 2>/dev/null`" ]
|
|
then
|
|
w_die "Cannot find wine ($WINE)"
|
|
fi
|
|
|
|
WINEPREFIX=${WINEPREFIX:-$HOME/.wine}
|
|
W_DRIVE_C="$WINEPREFIX/dosdevices/c:"
|
|
|
|
# Create $WINEPREFIX if not already there, and wait for it to complete
|
|
# (otherwise, there's a nasty race condition):
|
|
# DO NOT USE $WINE BEFORE THIS, if you need to, then move this appropriately.
|
|
if test ! -d "$WINEPREFIX"
|
|
then
|
|
early_wine cmd /c echo hi > /dev/null 2>&1
|
|
fi
|
|
|
|
# Prevent running with wrong user id.
|
|
# It's bad to create files as the wrong user!
|
|
die_if_user_not_dirowner "$WINEPREFIX"
|
|
XXXPATH="early_wine winepath"
|
|
;;
|
|
esac
|
|
|
|
W_WINDIR_UNIX="$W_DRIVE_C/windows"
|
|
|
|
# Win(e) 32/64?
|
|
# Using the variable W_SYSTEM32_DLLS instead of SYSTEM32 because some stuff does go under system32 for both arch's
|
|
# e.g., spool/drivers/color
|
|
if test -d "$W_DRIVE_C/windows/syswow64"
|
|
then
|
|
W_ARCH=win64
|
|
W_SYSTEM32_DLLS="$W_WINDIR_UNIX/syswow64"
|
|
SYSTEM64_DLLS="$W_WINDIR_UNIX/system32"
|
|
else
|
|
W_ARCH=win32
|
|
W_SYSTEM32_DLLS="$W_WINDIR_UNIX/system32"
|
|
fi
|
|
|
|
# Decide where to store downloaded files
|
|
if test ! "$W_CACHE" -a -d $HOME/.winetrickscache
|
|
then
|
|
# For backwards compatibility
|
|
W_CACHE="$HOME/.winetrickscache"
|
|
elif test -d $HOME/Library/Caches
|
|
then
|
|
# MacOSX
|
|
W_CACHE="$HOME/Library/Caches/winetricks"
|
|
else
|
|
# See http://standards.freedesktop.org/basedir-spec/latest/ar01s03.html
|
|
XDG_CACHE_HOME=${XDG_CACHE_HOME:-$HOME/.cache}
|
|
W_CACHE="${W_CACHE:-$XDG_CACHE_HOME/winetricks}"
|
|
fi
|
|
test -d "$W_CACHE" || mkdir -p "$W_CACHE"
|
|
|
|
# Internal variables; these locations are not too important
|
|
W_CACHE_WIN="`$XXXPATH -w $W_CACHE | tr '\012' ' ' | sed 's/ $//'`"
|
|
W_TMP="$W_DRIVE_C"/winetrickstmp
|
|
W_TMP_WIN='c:\winetrickstmp'
|
|
|
|
mkdir -p "$W_TMP" || w_die "can't create $W_TMP"
|
|
# Clean up after failed runs, if needed
|
|
(cd "$W_TMP" && rm -rf ./*)
|
|
|
|
# For case where z: doesn't exist or / is writable (!),
|
|
# make a drive letter for W_CACHE. Clean it up on exit.
|
|
for letter in y x w v u t s r q p o n m
|
|
do
|
|
if ! test -d "$WINEPREFIX"/dosdevices/${letter}:
|
|
then
|
|
WINETRICKS_CACHE_SYMLINK="$WINEPREFIX"/dosdevices/${letter}:
|
|
WINETRICKS_CACHE_DRIVE=$letter
|
|
ln -sf "$W_CACHE" "$WINETRICKS_CACHE_SYMLINK"
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Overridden for windows
|
|
ISO_MOUNT_ROOT=/mnt/winetricks
|
|
|
|
# Which sourceforge mirror to use. Rotate based on time, since
|
|
# their mirror picker sometimes persistantly sends you to a broken
|
|
# mirror.
|
|
case `date +%S` in
|
|
*[23]) SOURCEFORGE=http://easynews.dl.sourceforge.net/sourceforge ;;
|
|
*) SOURCEFORGE=http://downloads.sourceforge.net;;
|
|
esac
|
|
|
|
# Execute with error checking
|
|
w_try()
|
|
{
|
|
# "VAR=foo w_try cmd" fails to put VAR in the environment
|
|
# with some versions of bash if w_try is a shell function?!
|
|
# Adding this explicit export works around it.
|
|
export WINEDLLOVERRIDES
|
|
echo Executing "$@"
|
|
# Mark executable - needed if running on windows vista
|
|
case "$1" in
|
|
*.exe) chmod +x "$1" || true
|
|
cmd /c "$@"
|
|
;;
|
|
*)
|
|
"$@"
|
|
;;
|
|
esac
|
|
status=$?
|
|
if test $status -ne 0
|
|
then
|
|
w_die "Note: command '$@' returned status $status. Aborting."
|
|
fi
|
|
}
|
|
|
|
w_try_regedit()
|
|
{
|
|
# on windows, doesn't work without cmd /c
|
|
case "$OS" in
|
|
"Windows_NT") cmdc="cmd /c";;
|
|
*) unset cmdc
|
|
esac
|
|
|
|
w_try early_wine $cmdc regedit "$@"
|
|
}
|
|
|
|
regedit() {
|
|
w_die oops, bug, please report
|
|
}
|
|
|
|
w_try_regsvr()
|
|
{
|
|
w_try $WINE regsvr32 $W_UNATTENDED_SLASH_S $@
|
|
}
|
|
|
|
w_try_cabextract()
|
|
{
|
|
# Not always installed, but shouldn't be fatal unless it's being used
|
|
_W_cabextract="`which cabextract 2>/dev/null`"
|
|
if test ! -x "$_W_cabextract"
|
|
then
|
|
w_die "Cannot find cabextract. Please install it (e.g. 'sudo apt-get install cabextract' or 'sudo yum install cabextract')."
|
|
fi
|
|
|
|
w_try $_W_cabextract -q "$@"
|
|
unset _W_cabextract
|
|
}
|
|
|
|
cabextract() {
|
|
w_die oops, bug, please report
|
|
}
|
|
|
|
w_try_unrar() {
|
|
# Not always installed, but shouldn't be fatal unless it's being used
|
|
UNRAR="`which unrar 2>/dev/null`"
|
|
if test ! -x "$UNRAR"
|
|
then
|
|
w_die "Cannot find unrar. Please install it (e.g. 'sudo apt-get install unrar' or 'sudo yum install unrar'). For cygwin, you can get it at http://gnuwin32.sourceforge.net/packages/unrar.htm"
|
|
fi
|
|
|
|
w_try $UNRAR "$@"
|
|
}
|
|
|
|
unrar() {
|
|
w_die oops, bug, please report
|
|
}
|
|
|
|
w_try_unzip()
|
|
{
|
|
# Not always installed, but shouldn't be fatal unless it's being used
|
|
UNZIP="`which unzip 2>/dev/null`"
|
|
if test ! -x "$UNZIP"
|
|
then
|
|
w_die "Cannot find unzip. Please install it (e.g. 'sudo apt-get install unzip' or 'sudo yum install unzip')."
|
|
fi
|
|
|
|
w_try $UNZIP -o -q "$@"
|
|
}
|
|
|
|
unzip() {
|
|
w_die oops, bug, please report
|
|
}
|
|
|
|
# verify an sha1sum
|
|
verify_sha1sum() {
|
|
wantsum=$1
|
|
file=$2
|
|
|
|
gotsum=`$SHA1SUM < "$file" | sed 's/(stdin)= //;s/ .*//'`
|
|
if [ "$gotsum"x != "$wantsum"x ]
|
|
then
|
|
w_die "sha1sum mismatch! Rename $file and w_try again."
|
|
fi
|
|
}
|
|
|
|
# Download a file
|
|
# Usage: w_download package url [sha1sum [filename]]
|
|
# Caches downloads in winetrickscache/$package
|
|
w_download() {
|
|
if [ "$4"x != ""x ]
|
|
then
|
|
file="$4"
|
|
else
|
|
file=`basename "$2"`
|
|
fi
|
|
cache="$W_CACHE/$1"
|
|
mkdir -p "$cache"
|
|
# Try download twice
|
|
checksum_ok=""
|
|
tries=0
|
|
while test $tries -lt 2
|
|
do
|
|
tries=`expr $tries + 1`
|
|
|
|
if test -s "$cache/$file"
|
|
then
|
|
if test "$3"
|
|
then
|
|
# If checksum matches, declare success and exit loop
|
|
gotsum=`$SHA1SUM < "$cache/$file" | sed 's/(stdin)= //;s/ .*//'`
|
|
if [ "$gotsum"x = "$3"x ]
|
|
then
|
|
checksum_ok=1
|
|
break
|
|
fi
|
|
if test ! "$WINETRICKS_CONTINUE_DOWNLOAD"
|
|
then
|
|
w_warn "Checksum for $cache/$file did not match, retrying download"
|
|
mv -f "$cache/$file" "$cache/$file".bak
|
|
fi
|
|
else
|
|
# file exists, no checksum known, declare success and exit loop
|
|
break
|
|
fi
|
|
elif test -f "$cache/$file"
|
|
then
|
|
# zero length file, just delete before retrying
|
|
rm "$cache/$file"
|
|
fi
|
|
|
|
_W_dl_olddir=`pwd`
|
|
cd "$cache"
|
|
# Mac folks tend to have curl rather than wget
|
|
# On Mac, 'which' doesn't return good exit status
|
|
# Need to jam in --header "Accept-Encoding: gzip,deflate" else
|
|
# redhat.com decompresses liberation-fonts.tar.gz!
|
|
if [ -x "`which wget 2>/dev/null`" ]
|
|
then
|
|
# Use -nd to insulate ourselves from people who set -x in WGETRC
|
|
# [*] --retry-connrefused works around the broken sf.net mirroring
|
|
# system when downloading corefonts
|
|
# [*] --read-timeout is useful on the adobe server that doesn't
|
|
# close the connection unless you tell it to (control-C or closing
|
|
# the socket)
|
|
w_try wget -O "$file" -nd -c --read-timeout=300 --retry-connrefused --header "Accept-Encoding: gzip,deflate" "$2"
|
|
elif [ -x "`which curl 2>/dev/null`" ]
|
|
then
|
|
# curl doesn't get filename from the location given by the server!
|
|
# fortunately, we know it
|
|
w_try curl -L -o "$file" -C - --header "Accept-Encoding: gzip,deflate" "$2"
|
|
else
|
|
w_die "wget/curl not found, cannot download any files. Please install either wget or curl."
|
|
fi
|
|
# Need to decompress .exe's that are compressed, else cygwin fails
|
|
# Only affects cygwin, so don't barf if 'file' not installed
|
|
FILE=`which file 2>/dev/null`
|
|
case $FILE-$file in
|
|
/*-*.exe)
|
|
case `file $file` in
|
|
*gzip*) mv $file $file.gz; gunzip < $file.gz > $file;;
|
|
esac
|
|
esac
|
|
|
|
cd "$_W_dl_olddir"
|
|
unset _W_dl_olddir
|
|
done
|
|
if test "$3" -a ! "$checksum_ok"
|
|
then
|
|
verify_sha1sum $3 "$cache/$file"
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# Has to be set in a few places...
|
|
w_set_winver() {
|
|
# FIXME: This should really be done with winecfg, but it has no CLI options.
|
|
|
|
# First, delete any lingering version info, otherwise it may conflict:
|
|
$WINE reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion" /v SubVersionNumber /f || true
|
|
$WINE reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion" /v VersionNumber /f || true
|
|
$WINE reg delete "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v CSDVersion /f || true
|
|
$WINE reg delete "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v CurrentBuildNumber /f || true
|
|
$WINE reg delete "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion /f || true
|
|
$WINE reg delete "HKLM\System\CurrentControlSet\Control\ProductOptions" /v ProductType /f || true
|
|
$WINE reg delete "HKLM\System\CurrentControlSet\Control\ServiceCurrent" /v OS /f || true
|
|
$WINE reg delete "HKLM\System\CurrentControlSet\Control\Windows" /v CSDVersion /f || true
|
|
$WINE reg delete "HKCU\Software\Wine" /v Version /f || true
|
|
|
|
case $1 in
|
|
win31)
|
|
echo "Setting Windows version to $1"
|
|
cat > "$W_TMP"/set-winver.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_USERS\S-1-5-4\Software\Wine]
|
|
"Version"="win31"
|
|
|
|
_EOF_
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\set-winver.reg
|
|
return
|
|
;;
|
|
win98)
|
|
# This key is only used for win 95/98:
|
|
|
|
echo "Setting Windows version to $1"
|
|
cat > "$W_TMP"/set-winver.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion]
|
|
"SubVersionNumber"=" A "
|
|
"VersionNumber"="4.10.2222"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\set-winver.reg
|
|
return
|
|
;;
|
|
nt40)
|
|
# Similar to modern version, but sets two extra keys:
|
|
|
|
echo "Setting Windows version to $1"
|
|
cat > "$W_TMP"/set-winver.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion]
|
|
"CSDVersion"="Service Pack 6a"
|
|
"CurrentBuildNumber"="1381"
|
|
"CurrentVersion"="4.0"
|
|
|
|
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ProductOptions]
|
|
"ProductType"="WinNT"
|
|
|
|
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceCurrent]
|
|
"OS"="Windows_NT"
|
|
|
|
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Windows]
|
|
"CSDVersion"=dword:00000600
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\set-winver.reg
|
|
return
|
|
;;
|
|
win2k)
|
|
csdversion="Service Pack 4"
|
|
currentbuildnumber="2195"
|
|
currentversion="5.0"
|
|
csdversion_hex=dword:00000400
|
|
;;
|
|
winxp)
|
|
csdversion="Service Pack 3"
|
|
currentbuildnumber="2600"
|
|
currentversion="5.1"
|
|
csdversion_hex=dword:00000300
|
|
;;
|
|
vista)
|
|
csdversion="Service Pack 2"
|
|
currentbuildnumber="6002"
|
|
currentversion="6.0"
|
|
csdversion_hex=dword:00000200
|
|
;;
|
|
win7)
|
|
csdversion="Service Pack 1"
|
|
currentbuildnumber="7601"
|
|
currentversion="6.1"
|
|
csdversion_hex=dword:00000100
|
|
;;
|
|
*)
|
|
die "Invalid Windows version given."
|
|
;;
|
|
esac
|
|
|
|
echo "Setting Windows version to $1"
|
|
cat > "$W_TMP"/set-winver.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion]
|
|
"CSDVersion"="$csdversion"
|
|
"CurrentBuildNumber"="$currentbuildnumber"
|
|
"CurrentVersion"="$currentversion"
|
|
|
|
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Windows]
|
|
"CSDVersion"=$csdversion_hex
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\set-winver.reg
|
|
}
|
|
|
|
# FIXME: has this changed too?
|
|
set_app_winver() {
|
|
app="$1"
|
|
version="$2"
|
|
echo "Setting $app to $version mode"
|
|
(
|
|
echo REGEDIT4
|
|
echo ""
|
|
echo "[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\$app]"
|
|
echo "\"Version\"=\"$version\""
|
|
) > "$W_TMP"/set-winver.reg
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\set-winver.reg
|
|
rm "$W_TMP"/set-winver.reg
|
|
}
|
|
|
|
set_ddr() {
|
|
echo "Setting DirectDrawRenderer to $1"
|
|
cat > "$W_TMP"/set-ddr.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"DirectDrawRenderer"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/set-ddr.reg
|
|
}
|
|
|
|
set_orm() {
|
|
echo "Setting OffscreenRenderingMode to $1"
|
|
cat > "$W_TMP"/set-orm.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"OffscreenRenderingMode"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\set-orm.reg
|
|
}
|
|
|
|
set_mmdevapi() {
|
|
echo "Setting mmdevapi to $1"
|
|
|
|
w_override_dlls $1 mmdevapi
|
|
}
|
|
|
|
set_rtlm() {
|
|
echo "Setting RenderTargetLockMode to $1"
|
|
cat > "$W_TMP"/set-rtlm.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"RenderTargetLockMode"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/set-rtlm.reg
|
|
}
|
|
|
|
set_sdo() {
|
|
echo "Setting StrictDrawOrdering to $1"
|
|
cat > "$W_TMP"/set-sdo.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"StrictDrawOrdering"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/set-sdo.reg
|
|
|
|
}
|
|
|
|
set_vsm() {
|
|
echo "Setting Vertex Shaders to $1"
|
|
cat > "$W_TMP"/set-vsm.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"VertexShaderMode"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/set-vsm.reg
|
|
|
|
}
|
|
|
|
set_multisampling() {
|
|
echo "Setting Multisampling to $1"
|
|
cat > "$W_TMP"/set-multi.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"Multisampling"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/set-multi.reg
|
|
}
|
|
|
|
set_mwo () {
|
|
echo "Setting MouseWarpOverride to $1"
|
|
cat > "$W_TMP"/set-mwo.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\DirectInput]
|
|
"MouseWarpOverride"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/set-mwo.reg
|
|
}
|
|
|
|
npm_repack (){
|
|
echo "Setting Nonpower2Mode to repack"
|
|
cat > "$W_TMP"/set-npw.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"Nonpower2Mode"="repack"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/set-npw.reg
|
|
|
|
}
|
|
|
|
set_psm() {
|
|
echo "Setting PixelShaderMode to $1"
|
|
cat > "$W_TMP"/set-psm.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"PixelShaderMode"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/set-psm.reg
|
|
}
|
|
|
|
set_sound_driver() {
|
|
echo "Setting sound driver to $1"
|
|
cat > "$W_TMP"/set-sound.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Drivers]
|
|
"Audio"="$1"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\set-sound.reg
|
|
}
|
|
|
|
set_videomemorysize() {
|
|
size=$1
|
|
echo "Setting video memory size to $size"
|
|
|
|
case $size in
|
|
default)
|
|
|
|
cat > "$W_TMP"/set-video.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"VideoMemorySize"=-
|
|
|
|
_EOF_
|
|
;;
|
|
*)
|
|
cat > "$W_TMP"/set-video.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"VideoMemorySize"="$size"
|
|
|
|
_EOF_
|
|
esac
|
|
w_try_regedit "$W_TMP_WIN"\\set-video.reg
|
|
}
|
|
|
|
set_virtualdesktop() {
|
|
size=$1
|
|
case $size in
|
|
off|disabled)
|
|
cat > "$W_TMP"/vd.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Explorer]
|
|
"Desktop"=-
|
|
[HKEY_CURRENT_USER\Software\Wine\Explorer\Desktops]
|
|
"Default"=-
|
|
|
|
_EOF_
|
|
;;
|
|
[1-9]*x[1-9]*)
|
|
cat > "$W_TMP"/vd.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Explorer]
|
|
"Desktop"="Default"
|
|
[HKEY_CURRENT_USER\Software\Wine\Explorer\Desktops]
|
|
"Default"="$size"
|
|
|
|
_EOF_
|
|
;;
|
|
*)
|
|
w_die "you want a virtual desktop of $size? I don't understand."
|
|
;;
|
|
esac
|
|
w_try_regedit "$W_TMP"/vd.reg
|
|
}
|
|
|
|
disable_crashdialog() {
|
|
echo "Disabling graphical crash dialog"
|
|
cat > "$W_TMP"/crashdialog.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\WineDbg]
|
|
"ShowCrashDialog"=dword:00000000
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\crashdialog.reg
|
|
}
|
|
|
|
# Function to protect wine-specific sections of code.
|
|
# Outputs a message to console explaining what's being skipped.
|
|
# Usage:
|
|
# if w_skip_windows name-of-operation
|
|
# then
|
|
# return
|
|
# fi
|
|
# ... do something that doesn't make sense on windows ...
|
|
|
|
w_skip_windows()
|
|
{
|
|
case "$OS" in
|
|
"Windows_NT")
|
|
echo "Skipping operation '$1' on Windows"
|
|
return 0
|
|
;;
|
|
esac
|
|
return 1
|
|
}
|
|
|
|
sandbox()
|
|
{
|
|
w_skip_windows sandbox && return
|
|
|
|
# Unmap drive Z
|
|
# Might want to unpack gecko first, since Wine won't be able to get to /usr/lib/wine after this
|
|
rm -f "$WINEPREFIX/dosdevices/z:"
|
|
|
|
# remove symlinks (won't do anything if they're already directories)
|
|
rm -f "$WINEPREFIX/drive_c/users/$USER/Desktop"
|
|
rm -f "$WINEPREFIX/drive_c/users/$USER/My Documents"
|
|
rm -f "$WINEPREFIX/drive_c/users/$USER/My Music"
|
|
rm -f "$WINEPREFIX/drive_c/users/$USER/My Pictures"
|
|
rm -f "$WINEPREFIX/drive_c/users/$USER/My Videos"
|
|
# create replacement directories if needed
|
|
mkdir -p "$WINEPREFIX/drive_c/users/$USER/Desktop"
|
|
mkdir -p "$WINEPREFIX/drive_c/users/$USER/My Documents"
|
|
mkdir -p "$WINEPREFIX/drive_c/users/$USER/My Music"
|
|
mkdir -p "$WINEPREFIX/drive_c/users/$USER/My Pictures"
|
|
mkdir -p "$WINEPREFIX/drive_c/users/$USER/My Videos"
|
|
|
|
# Disable unixfs
|
|
# Unfortunately, when you run with a different version of wine, wine will recreate this key.
|
|
# See http://bugs.winehq.org/show_bug.cgi?id=22450
|
|
$WINE regedit /d 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Namespace\{9D20AAE8-0625-44B0-9CA7-71889C2254D9}'
|
|
|
|
# Disable recreation of the above key - or any updating of the regisry - when running with new version of wine.
|
|
echo disable > "$WINEPREFIX/.update-timestamp"
|
|
}
|
|
|
|
w_unset_winver() {
|
|
w_set_winver winxp
|
|
}
|
|
|
|
w_override_dlls() {
|
|
w_skip_windows override && return
|
|
|
|
mode=$1
|
|
if [ $mode = "disabled" ]
|
|
then
|
|
mode=""
|
|
fi
|
|
shift
|
|
echo Using $mode override for following DLLs: $@
|
|
cat > "$W_TMP"/override-dll.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
|
|
_EOF_
|
|
while test "$1" != ""
|
|
do
|
|
case "$1" in
|
|
comctl32)
|
|
rm -rf "$W_WINDIR_UNIX"/winsxs/manifests/x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef.manifest
|
|
;;
|
|
esac
|
|
|
|
# Note: if you want to override even DLLs loaded with an absolute path,
|
|
# you need to add an asterisk:
|
|
echo "\"*$1\"=\"$mode\"" >> "$W_TMP"/override-dll.reg
|
|
#echo "\"$1\"=\"$mode\"" >> "$W_TMP"/override-dll.reg
|
|
|
|
shift
|
|
done
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\override-dll.reg
|
|
rm "$W_TMP"/override-dll.reg
|
|
}
|
|
|
|
override_no_dlls() {
|
|
w_skip_windows override && return
|
|
|
|
$WINE regedit /d 'HKEY_CURRENT_USER\Software\Wine\DllOverrides'
|
|
}
|
|
|
|
override_all_dlls() {
|
|
# Disable all but the commonly used DLLs Wine doesn't have a credible alternative for
|
|
# i.e. Don't disallow msvcp80 or d3dx9_* for now
|
|
# d3dx9_24.dll d3dx9_25.dll d3dx9_26.dll d3dx9_27.dll d3dx9_28.dll d3dx9_29.dll d3dx9_30.dll d3dx9_31.dll d3dx9_32.dll d3dx9_33.dll d3dx9_34.dll d3dx9_35.dll d3dx9_36.dll d3dx9_37.dll d3dx9_38.dll d3dx9_39.dll d3dx9_40.dll d3dx9_41.dll d3dx9_42.dll d3dxof.dll
|
|
w_override_dlls builtin \
|
|
acledit aclui activeds actxprxy advapi32 advpack amstream atl authz avicap32 \
|
|
avifil32 avifilebavrt bcrypt browseui cabinet capi2032 cards cfgmgr32 clusapi \
|
|
comcat comctl32 comdlg32 commdlg compobj compstui credui crtdll crypt32 cryptdlg \
|
|
cryptdll cryptnet cryptui ctapi32 ctl3d ctl3d32 ctl3dv2 d3d10 \
|
|
d3d10core d3d8 d3d9 d3dim d3drm \
|
|
d3dxof dbghelp dciman32 ddeml ddraw ddrawex \
|
|
devenum dinput dinput8 dispdib dispex dmband dmcompos dmime dmloader dmscript \
|
|
dmstyle dmsynth dmusic dmusic32 dnsapi dplay dplayx dpnaddr dpnet dpnhpast \
|
|
dpnlobby dpwsockx drmclien dsound dssenh dswave dwmapi dxdiagn dxgi faultrep \
|
|
fltlib fusion fwpuclnt gdi32 gdiplus glu32 gpkcsp hal hid hlink \
|
|
hnetcfg httpapi iccvid icmp imagehlp imm imm32 inetcomm inetmib1 infosoft \
|
|
initpki inkobj inseng iphlpapi itircl itss jscript kernel32 loadperf localspl \
|
|
localui lz32 lzexpand mapi32 mapistub mciavi32 mcicda mciqtz32 mciseq mciwave \
|
|
midimap mlang mmdevapi mmsystem mpr mprapi msacm msacm32 mscat32 mscms \
|
|
mscoree msctf msdaps msdmo msftedit mshtml msi msimg32 msimtf msisip \
|
|
msnet32 msrle32 mssign32 mssip32 mstask msvcirt msvcr70 msvcr71 msvcr80 \
|
|
msvcr90 msvcrt msvcrt20 msvcrt40 msvcrtd msvfw32 msvidc32 msvideo mswsock msxml3 \
|
|
msxml4 nddeapi netapi32 newdev ntdll ntdsapi ntprint objsel odbc32 odbccp32 \
|
|
ole2 ole2conv ole2disp ole2nls ole2prox ole2thk ole32 oleacc oleaut32 olecli \
|
|
olecli32 oledb32 oledlg olepro32 olesvr olesvr32 olethk32 openal32 opengl32 pdh \
|
|
pidgen powrprof printui propsys psapi pstorec qcap qedit qmgr qmgrprxy \
|
|
quartz query rasapi16 rasapi32 rasdlg resutils riched20 riched32 rpcrt4 rsabase \
|
|
rsaenh rtutils sccbase schannel secur32 security sensapi serialui setupapi setupx \
|
|
sfc sfc_os shdoclc shdocvw shell shell32 shfolder shlwapi slbcsp slc \
|
|
snmpapi softpub spoolss sti storage stress svrapi sxs t2embed tapi32 \
|
|
toolhelp traffic twain twain_32 typelib unicows updspapi url urlmon user32 \
|
|
userenv usp10 uxtheme vdmdbg ver version w32skrnl w32sys wbemprox wiaservc \
|
|
win32s16 win87em winaspi windebug windowscodecs wined3d winedos winemapi wing wing32 \
|
|
winhttp wininet winmm winnls winnls32 winscard winsock wintab wintab32 wintrust \
|
|
wldap32 wmi wmiutils wnaspi32 wow32 ws2_32 wsock32 wtsapi32 wuapi wuaueng \
|
|
xinput1_1 xinput1_2 xinput1_3 xinput9_1_0 xmllite
|
|
}
|
|
|
|
w_override_app_dlls()
|
|
{
|
|
w_skip_windows override && return
|
|
|
|
_W_app=$1
|
|
shift
|
|
_W_mode=$1
|
|
shift
|
|
echo Using $_W_mode override for following DLLs when running $_W_app: $@
|
|
(
|
|
echo REGEDIT4
|
|
echo ""
|
|
echo "[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\$app\\DllOverrides]"
|
|
) > "$W_TMP"/override-dll.reg
|
|
|
|
while test "$1" != ""
|
|
do
|
|
case "$1" in
|
|
comctl32)
|
|
rm -rf "$W_WINDIR_UNIX"/winsxs/manifests/x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef.manifest
|
|
;;
|
|
esac
|
|
echo "\"$1\"=\"$_W_mode\"" >> "$W_TMP"/override-dll.reg
|
|
shift
|
|
done
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\override-dll.reg
|
|
rm "$W_TMP"/override-dll.reg
|
|
unset _W_app _W_mode
|
|
}
|
|
|
|
w_register_font()
|
|
{
|
|
file=$1
|
|
shift
|
|
font=$1
|
|
#echo "Registering $file as $font"
|
|
cat > "$W_TMP"/register-font.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts]
|
|
"$font"="$file"
|
|
_EOF_
|
|
# too verbose
|
|
w_try_regedit "$W_TMP_WIN"\\register-font.reg
|
|
}
|
|
|
|
append_path() {
|
|
# Prepend $1 to the windows path in the registry. Caller must use single quotes and double backslashes in argument.
|
|
NEW_PATH="$1"
|
|
WIN_PATH="`WINEDEBUG= $WINE cmd.exe /c echo "%PATH%" | tr -d '\r' | sed 's,\\\\,\\\\\\\\,g'`"
|
|
|
|
sed 's/$/\r/' > "$W_TMP"/path.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment]
|
|
"PATH"="$NEW_PATH;$WIN_PATH"
|
|
_EOF_
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\path.reg
|
|
rm -f "$W_TMP"/path.reg
|
|
}
|
|
|
|
# Usage: w_workaround_wine_bug bugnumber [good-wineversion-shell-pattern]
|
|
# False (nonzero status) on Windows.
|
|
# True (zero status) on Wine unless good-wineversion-shell-pattern is set
|
|
# and matches the current wine version.
|
|
# (FIXME: make that easier to use, maybe by specifying a range instead of a pattern.)
|
|
# For debugging: if you want to skip a bug's workaround, put the bug number in the
|
|
# environment variable WINETRICKS_BUG_BLACKLIST to disable it.
|
|
w_workaround_wine_bug()
|
|
{
|
|
if test "$WINE" = ""
|
|
then
|
|
echo No need to work around wine bug $1 on windows
|
|
return 1
|
|
fi
|
|
if test "$2" != ""
|
|
then
|
|
# Using shell patterns in a variable with case is tricky, need to use eval
|
|
checkcode="
|
|
case $WINEVERSION in
|
|
$2) echo No need to work around wine bug $1 in wine $WINEVERSION
|
|
return 1
|
|
;;
|
|
esac
|
|
"
|
|
eval "$checkcode"
|
|
fi
|
|
if test "$WINETRICKS_BUG_BLACKLIST" && echo $1 | grep -q "$WINETRICKS_BUG_BLACKLIST"
|
|
then
|
|
echo wine bug $1 workaround blacklisted, skipping
|
|
return 1
|
|
fi
|
|
# In wisotool, we warn here, but traditionally winetricks has been silent about workarounds, so just echo
|
|
echo "Working around wine bug $1"
|
|
return 0
|
|
}
|
|
|
|
# Function for verbs to register their main executable.
|
|
# Example:
|
|
# w_declare_exe "$W_PROGRAMS_X86_WIN\\WorldOfGooDemo" WorldOfGoo.exe
|
|
w_declare_exe()
|
|
{
|
|
_W_dir="$1"
|
|
_W_exe="$2"
|
|
cat > "$W_DRIVE_C/run-$W_PACKAGE.bat" <<__EOF__
|
|
${W_PROGRAMS_DRIVE}:
|
|
cd "$_W_dir"
|
|
$_W_exe
|
|
__EOF__
|
|
unset _W_dir _W_exe
|
|
}
|
|
|
|
#----- common download for several verbs
|
|
|
|
helper_directx_dl() {
|
|
# February 2010 DirectX 9c User Redistributable
|
|
# http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=0cef8180-e94a-4f56-b157-5ab8109cb4f5
|
|
w_download . http://download.microsoft.com/download/E/E/1/EE17FF74-6C45-4575-9CF4-7FC2597ACD18/directx_feb2010_redist.exe a97c820915dc20929e84b49646ec275760012a42
|
|
|
|
DIRECTX_NAME=directx_feb2010_redist.exe
|
|
}
|
|
|
|
#----- One function per package, in alphabetical order ----------
|
|
|
|
load_7zip()
|
|
{
|
|
if test -f "$W_PROGRAMS_X86_UNIX/7-Zip/7z.exe"
|
|
then
|
|
echo "7zip already installed, skipping"
|
|
return
|
|
fi
|
|
# FIXME: use more up to date version
|
|
w_download 7zip http://downloads.sourceforge.net/sevenzip/7z465.exe c36012e960fa3932cd23f30ac5b0fe722740243a
|
|
w_try $WINE "$W_CACHE"/7zip/7z465.exe $W_UNATTENDED_SLASH_S
|
|
w_declare_exe "$W_PROGRAMS_X86_WIN\\7-Zip" "7z.exe %1 %2 %3 %4 %5"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_abiword()
|
|
{
|
|
if test -f "$W_PROGRAMS_X86_UNIX/AbiWord/bin/AbiWord.exe"
|
|
then
|
|
echo "abiword already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
w_download abiword http://www.abisource.com/downloads/abiword/2.8.6/Windows/abiword-setup-2.8.6.exe a91acd3f60e842d23556032d34f1600602768318
|
|
w_try $WINE "$W_CACHE"/abiword/abiword-setup-2.8.6.exe $W_UNATTENDED_SLASH_S
|
|
w_declare_exe "$W_PROGRAMS_X86_WIN\\AbiWord\\bin" AbiWord.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_adobeair()
|
|
{
|
|
# corefonts is necessary to avoid an installer crash.
|
|
load_corefonts
|
|
|
|
# Adobe AIR 2.0.2 runtime
|
|
# 2010-02-02: sha1sum 5c95f51a680f8c175a92755238127be4ad22c53b
|
|
# 2010-02-20: sha1sum 6f03e723bd855abbe00eb8fdf22da54fb49c62db
|
|
# 2010-07-29: sha1sum 7b93aedaf48ad7854940e7a4e7d9394a255e888b
|
|
w_download . http://airdownload.adobe.com/air/win/download/2.0.2/AdobeAIRInstaller.exe 7b93aedaf48ad7854940e7a4e7d9394a255e888b
|
|
w_try $WINE "$W_CACHE"/AdobeAIRInstaller.exe $W_UNATTENDED_DASH_SILENT
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_amstream()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'amstream.dll' "$W_TMP/dxnt.cab"
|
|
w_try_regsvr amstream.dll
|
|
|
|
w_override_dlls native amstream
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_art2kmin()
|
|
{
|
|
# See http://www.microsoft.com/downloads/details.aspx?familyid=d9ae78d9-9dc6-4b38-9fa6-2c745a175aed&displaylang=en
|
|
w_download . http://download.microsoft.com/download/D/2/A/D2A2FC8B-0447-491C-A5EF-E8AA3A74FB98/AccessRuntime.exe 571811b7536e97cf4e4e53bbf8260cddd69f9b2d
|
|
cd "$W_CACHE"
|
|
w_try $WINE AccessRuntime.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_atmlib()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyID=1001AAF1-749F-49F4-8010-297BD6CA33A0&displaylang=en
|
|
# FIXME: This is a huge w_download for a single dll.
|
|
w_download . http://download.microsoft.com/download/E/6/A/E6A04295-D2A8-40D0-A0C5-241BFECD095E/W2KSP4_EN.EXE fadea6d94a014b039839fecc6e6a11c20afa4fa8
|
|
cd "$W_TMP"
|
|
w_try_cabextract "$W_CACHE"/W2KSP4_EN.EXE i386/atmlib.dl_
|
|
w_try cp atmlib.dll "$W_SYSTEM32_DLLS"
|
|
w_try rm -rf i386
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_autohotkey()
|
|
{
|
|
if test -f "$W_PROGRAMS_X86_UNIX/AutoHotkey/AutoHotkey.exe"
|
|
then
|
|
echo "autohotkey already installed"
|
|
return
|
|
fi
|
|
w_download autohotkey http://www.autohotkey.net/programs/AutoHotkey104805_Install.exe 13e5a9ca6d5b7705f1cd02560c3af4d38b1904fc
|
|
cd "$W_CACHE"/autohotkey
|
|
w_try $WINE AutoHotkey104805_Install.exe $W_UNATTENDED_SLASH_S
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_baekmuk()
|
|
{
|
|
# The Baekmuk fonts provide Korean glyphs. May also be needed with fakekorean function.
|
|
# See http://kldp.net/projects/baekmuk for project page
|
|
# Need to w_download from Debian as the project page has unique captcha tokens per visitor
|
|
w_download . http://ftp.de.debian.org/debian/pool/main/t/ttf-baekmuk/ttf-baekmuk_2.2.orig.tar.gz afdee34f700007de6ea87b43c92a88b7385ba65b
|
|
cd "$W_TMP/"
|
|
gunzip -dc "$W_CACHE/ttf-baekmuk_2.2.orig.tar.gz" | tar -xf -
|
|
w_try mv baekmuk-ttf-2.2/ttf/*.ttf "$W_FONTSDIR_UNIX"
|
|
w_register_font batang.ttf "Baekmuk Batang"
|
|
w_register_font gulim.ttf "Baekmuk Gulim"
|
|
w_register_font dotum.ttf "Baekmuk Dotum"
|
|
w_register_font hline.ttf "Baekmuk Headline"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_comctl32()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=6f94d31a-d1e0-4658-a566-93af0d8d4a1e
|
|
w_download comctl32 http://download.microsoft.com/download/platformsdk/redist/5.80.2614.3600/w9xnt4/en-us/cc32inst.exe 94c3c494258cc54bd65d2f0153815737644bffde
|
|
|
|
w_try $WINE "$W_CACHE"/comctl32/cc32inst.exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q
|
|
w_try_unzip -d "$W_TMP" "$W_TMP"/comctl32.exe
|
|
w_try $WINE "$W_TMP"/x86/50ComUpd.Exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q
|
|
w_try cp "$W_TMP"/comcnt.dll "$W_SYSTEM32_DLLS"/comctl32.dll
|
|
|
|
w_override_dlls native,builtin comctl32
|
|
|
|
# some builtin apps don't like native comctl32
|
|
w_override_app_dlls winecfg.exe builtin comctl32
|
|
w_override_app_dlls explorer.exe builtin comctl32
|
|
w_override_app_dlls iexplore.exe builtin comctl32
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_cmake()
|
|
{
|
|
w_download . http://www.cmake.org/files/v2.8/cmake-2.8.2-win32-x86.exe 2c46f4e804787b231c2f45e1b43f1838462e8dfe
|
|
w_try $WINE "$W_CACHE"/cmake-2.8.2-win32-x86.exe $W_UNATTENDED_SLASH_S
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_comctl32ocx()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyID=25437D98-51D0-41C1-BB14-64662F5F62FE
|
|
w_download . http://download.microsoft.com/download/3/a/5/3a5925ac-e779-4b1c-bb01-af67dc2f96fc/VisualBasic6-KB896559-v1-ENU.exe f52cf2034488235b37a1da837d1c40eb2a1bad84
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/VisualBasic6-KB896559-v1-ENU.exe
|
|
w_try cp "$W_TMP"/mscomctl.ocx "$W_SYSTEM32_DLLS"/mscomctl.ocx
|
|
w_try cp "$W_TMP"/comctl32.ocx "$W_SYSTEM32_DLLS"/comctl32.ocx
|
|
w_try_regsvr comctl32.ocx
|
|
w_try_regsvr mscomctl.ocx
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_colorprofile()
|
|
{
|
|
w_download . http://download.microsoft.com/download/whistler/hwdev1/1.0/wxp/en-us/ColorProfile.exe 6b72836b32b343c82d0760dff5cb51c2f47170eb
|
|
w_try_unzip -d "$W_TMP" "$W_CACHE"/ColorProfile.exe
|
|
|
|
# It's in system32 for both win32/win64
|
|
mkdir -p "$W_WINDIR_UNIX"/system32/spool/drivers/color
|
|
w_try cp -f "$W_TMP/sRGB Color Space Profile.icm" "$W_WINDIR_UNIX"/system32/spool/drivers/color
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_comdlg32ocx()
|
|
{
|
|
w_download . http://activex.microsoft.com/controls/vb6/comdlg32.cab d4f3e193c6180eccd73bad53a8500beb5b279cbf
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/comdlg32.cab
|
|
w_try cp "$W_TMP"/comdlg32.ocx "$W_SYSTEM32_DLLS"/comdlg32.ocx
|
|
w_try_regsvr comdlg32.ocx
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_controlpad()
|
|
{
|
|
# http://msdn.microsoft.com/en-us/library/ms968493.aspx
|
|
# Fixes error "Failed to load UniText..."
|
|
load_wsh57
|
|
w_download . http://download.microsoft.com/download/activexcontrolpad/install/4.0.0.950/win98mexp/en-us/setuppad.exe 8921e0f52507ca6a373c94d222777c750fb48af7
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/setuppad.exe
|
|
echo "If setup says 'Unable to start DDE ...', press Ignore"
|
|
w_try $WINE "$W_TMP"/setup $W_UNATTENDED_SLASH_Q_T
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_corefonts()
|
|
{
|
|
# See http://corefonts.sf.net
|
|
# TODO: let user pick mirror,
|
|
# see http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec for how
|
|
# TODO: add more fonts
|
|
|
|
# Added More Fonts (see msttcorefonts)
|
|
# [*] Pointed w_download locations to sites that actually contained the
|
|
# fonts to w_download (as of 04-03-2008)
|
|
#w_download . $SOURCEFORGE/corefonts/andale32.exe c4db8cbe42c566d12468f5fdad38c43721844c69
|
|
w_download . $SOURCEFORGE/corefonts/arial32.exe 6d75f8436f39ab2da5c31ce651b7443b4ad2916e
|
|
w_download . $SOURCEFORGE/corefonts/arialb32.exe d45cdab84b7f4c1efd6d1b369f50ed0390e3d344
|
|
w_download . $SOURCEFORGE/corefonts/comic32.exe 2371d0327683dcc5ec1684fe7c275a8de1ef9a51
|
|
w_download . $SOURCEFORGE/corefonts/courie32.exe 06a745023c034f88b4135f5e294fece1a3c1b057
|
|
w_download . $SOURCEFORGE/corefonts/georgi32.exe 90e4070cb356f1d811acb943080bf97e419a8f1e
|
|
w_download . $SOURCEFORGE/corefonts/impact32.exe 86b34d650cfbbe5d3512d49d2545f7509a55aad2
|
|
w_download . $SOURCEFORGE/corefonts/times32.exe 20b79e65cdef4e2d7195f84da202499e3aa83060
|
|
w_download . $SOURCEFORGE/corefonts/trebuc32.exe 50aab0988423efcc9cf21fac7d64d534d6d0a34a
|
|
w_download . $SOURCEFORGE/corefonts/verdan32.exe f5b93cedf500edc67502f116578123618c64a42a
|
|
w_download . $SOURCEFORGE/corefonts/webdin32.exe 2fb4a42c53e50bc70707a7b3c57baf62ba58398f
|
|
|
|
# Natively installed versions of these fonts will cause the installers
|
|
# to exit silently. Because there are apps out there that depend on the
|
|
# files being present in the Windows font directory we use cabextract
|
|
# to obtain the files and register the fonts by hand.
|
|
|
|
# Andale needs a FontSubstitutes entry
|
|
# w_try_cabextract --directory="$W_TMP" "$W_CACHE"/andale32.exe
|
|
|
|
# Display EULA
|
|
test x"$W_UNATTENDED_SLASH_Q" = x"" || w_try $WINE "$W_CACHE"/arial32.exe $W_UNATTENDED_SLASH_Q
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/arial32.exe
|
|
w_try cp -f "$W_TMP"/Arial*.TTF "$W_FONTSDIR_UNIX"
|
|
w_register_font Arial.TTF "Arial (TrueType)"
|
|
w_register_font Arialbd.TTF "Arial Bold (TrueType)"
|
|
w_register_font Arialbi.TTF "Arial Bold Italic (TrueType)"
|
|
w_register_font Ariali.TTF "Arial Italic (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/arialb32.exe
|
|
w_try cp -f "$W_TMP"/AriBlk.TTF "$W_FONTSDIR_UNIX"
|
|
w_register_font AriBlk.TTF "Arial Black (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/comic32.exe
|
|
w_try cp -f "$W_TMP"/Comic*.TTF "$W_FONTSDIR_UNIX"
|
|
w_register_font Comic.TTF "Comic Sans MS (TrueType)"
|
|
w_register_font Comicbd.TTF "Comic Sans MS Bold (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/courie32.exe
|
|
w_try cp -f "$W_TMP"/cour*.ttf "$W_FONTSDIR_UNIX"
|
|
w_register_font Cour.TTF "Courier New (TrueType)"
|
|
w_register_font CourBD.TTF "Courier New Bold (TrueType)"
|
|
w_register_font CourBI.TTF "Courier New Bold Italic (TrueType)"
|
|
w_register_font Couri.TTF "Courier New Italic (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/georgi32.exe
|
|
w_try cp -f "$W_TMP"/Georgia*.TTF "$W_FONTSDIR_UNIX"
|
|
w_register_font Georgia.TTF "Georgia (TrueType)"
|
|
w_register_font Georgiab.TTF "Georgia Bold (TrueType)"
|
|
w_register_font Georgiaz.TTF "Georgia Bold Italic (TrueType)"
|
|
w_register_font Georgiai.TTF "Georgia Italic (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/impact32.exe
|
|
w_try cp -f "$W_TMP"/Impact.TTF "$W_FONTSDIR_UNIX"
|
|
w_register_font Impact.TTF "Impact (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/times32.exe
|
|
w_try cp -f "$W_TMP"/Times*.TTF "$W_FONTSDIR_UNIX"
|
|
w_register_font Times.TTF "Times New Roman (TrueType)"
|
|
w_register_font Timesbd.TTF "Times New Roman Bold (TrueType)"
|
|
w_register_font Timesbi.TTF "Times New Roman Bold Italic (TrueType)"
|
|
w_register_font Timesi.TTF "Times New Roman Italic (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/trebuc32.exe
|
|
w_try cp -f "$W_TMP"/trebuc*.ttf "$W_FONTSDIR_UNIX"
|
|
w_register_font Trebuc.TTF "Trebucet MS (TrueType)"
|
|
w_register_font Trebucbd.TTF "Trebucet MS Bold (TrueType)"
|
|
w_register_font Trebucbi.TTF "Trebucet MS Bold Italic (TrueType)"
|
|
w_register_font Trebucit.TTF "Trebucet MS Italic (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/verdan32.exe
|
|
w_try cp -f "$W_TMP"/Verdana*.TTF "$W_FONTSDIR_UNIX"
|
|
w_register_font Verdana.TTF "Verdana (TrueType)"
|
|
w_register_font Verdanab.TTF "Verdana Bold (TrueType)"
|
|
w_register_font Verdanaz.TTF "Verdana Bold Italic (TrueType)"
|
|
w_register_font Verdanai.TTF "Verdana Italic (TrueType)"
|
|
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/webdin32.exe
|
|
w_try cp -f "$W_TMP"/Webdings.TTF "$W_FONTSDIR_UNIX"
|
|
w_register_font Webdings.TTF "Webdings (TrueType)"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_crypt32()
|
|
{
|
|
# https://www.microsoft.com/downloads/en/details.aspx?FamilyID=3d733ddd-1182-4d46-87c1-3357ca3fed28&DisplayLang=en
|
|
w_download crypt32 http://download.microsoft.com/download/1/6/2/1629d13a-dc5e-4dc6-a2a4-a6784942b94e/Q823182_XPE_SP2_X86_ENU.EXE c3e0aa35ab5197ede0d495c0edc242cf0fade54a
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" "$W_CACHE"/crypt32/Q823182_XPE_SP2_X86_ENU.EXE -F rep/329115_crypt32.dll
|
|
mv "$W_SYSTEM32_DLLS"/rep/329115_crypt32.dll "$W_SYSTEM32_DLLS"/crypt32.dll
|
|
w_override_dlls native crypt32
|
|
|
|
w_try w_call msasn1
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_cygwin()
|
|
{
|
|
if w_workaround_wine_bug 21206
|
|
then
|
|
# Wine can't handle current cygwin, so use some random verison of cygwin's setup from mid-2009
|
|
w_download cygwin http://kegel.com/cygwin/1.5/setup.exe 5cfb8ebe4f385b0fcffa04d22d607ec75ea05180
|
|
w_warn "Paste in ftp://www.fruitbat.org/pub/cygwin/circa/2009/09/08/111037 as the repo url for now, until bug 21206 is fixed"
|
|
# -X option is insecure, but we have to use it because fruitbat.org didn't archive .sig files :-(
|
|
_W_cygopts="-X"
|
|
else
|
|
w_download cygwin http://cygwin.com/setup.exe aaa2552de78e14891937c1fde86032e811cf3c3a
|
|
_W_cygopts=
|
|
fi
|
|
|
|
mkdir -p "$W_DRIVE_C"/cygpkgs
|
|
# If you happen to have saved your cygpkgs directory, unpack it now
|
|
test -f "$W_CACHE/cygwin/cygpkgs.tgz" && (cd "$W_DRIVE_C"; gunzip -dc "$W_CACHE/cygwin/cygpkgs.tgz" | tar -xf -)
|
|
cp "$W_CACHE/cygwin/setup.exe" "$W_DRIVE_C"/cygpkgs
|
|
cd "$W_DRIVE_C"/cygpkgs
|
|
w_try $WINE setup.exe $_W_cygopts
|
|
unset _W_cygopts
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_d3dx9()
|
|
{
|
|
helper_directx_dl
|
|
|
|
# Kinder, less invasive directx - only extract and override d3dx9_??.dll
|
|
w_try_cabextract -d "$W_TMP" -L -F '*d3dx9*x86*' "$W_CACHE"/$DIRECTX_NAME
|
|
for x in "$W_TMP"/*.cab
|
|
do
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F '*.dll' "$x"
|
|
done
|
|
|
|
# For now, not needed, but when Wine starts preferring our builtin dll over native it will be.
|
|
w_override_dlls native d3dx9_24 d3dx9_25 d3dx9_26 d3dx9_27 d3dx9_28 d3dx9_29 d3dx9_30
|
|
w_override_dlls native d3dx9_31 d3dx9_32 d3dx9_33 d3dx9_34 d3dx9_35 d3dx9_36 d3dx9_37
|
|
w_override_dlls native d3dx9_38 d3dx9_39 d3dx9_40 d3dx9_41 d3dx9_42
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_d3dx9_xx()
|
|
{
|
|
dllname=d3dx9_$1
|
|
|
|
helper_directx_dl
|
|
|
|
# Even kinder, less invasive directx - only extract and override d3dx9_xx.dll
|
|
w_try_cabextract -d "$W_TMP" -L -F "*$dllname*x86*" "$W_CACHE"/$DIRECTX_NAME
|
|
for x in "$W_TMP"/*.cab
|
|
do
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "$dllname.dll" "$x"
|
|
done
|
|
|
|
w_override_dlls native $dllname
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_d3dx10()
|
|
{
|
|
helper_directx_dl
|
|
|
|
# Kinder, less invasive directx10 - only extract and override d3dx10_??.dll
|
|
w_try_cabextract -d "$W_TMP" -L -F '*d3dx10*x86*' "$W_CACHE"/$DIRECTX_NAME
|
|
for x in "$W_TMP"/*.cab
|
|
do
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F '*.dll' "$x"
|
|
done
|
|
|
|
# For now, not needed, but when Wine starts preferring our builtin dll over native it will be.
|
|
w_override_dlls native d3dx10_33 d3dx10_34 d3dx10_35 d3dx10_36 d3dx10_37
|
|
w_override_dlls native d3dx10_38 d3dx10_39 d3dx10_40 d3dx10_41 d3dx10_42
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_d3dxof()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'd3dxof.dll' "$W_TMP/dxnt.cab"
|
|
|
|
w_override_dlls native d3dxof
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_devenum()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE/$DIRECTX_NAME"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'devenum.dll' "$W_TMP/dxnt.cab"
|
|
|
|
w_try_regsvr devenum.dll
|
|
|
|
w_override_dlls native devenum
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dinput8()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F 'dxnt.cab' "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dinput8.dll' "$W_TMP/dxnt.cab"
|
|
|
|
w_try_regsvr dinput8
|
|
|
|
w_override_dlls native dinput8
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dirac()
|
|
{
|
|
w_download . $SOURCEFORGE/dirac/Dirac%20Directshow%20Filter/Diract%20Direct%20Show%20Filter%201.0.2/DiracDirectShowFilter-1.0.2.exe c912d30a8fa500c7841444559feb1f49301611c4
|
|
w_try $WINE "$W_CACHE"/DiracDirectShowFilter-1.0.2.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_directmusic()
|
|
{
|
|
# Untested. Based off http://bugs.winehq.org/show_bug.cgi?id=4805 and http://bugs.winehq.org/show_bug.cgi?id=24911
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'devenum.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmband.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmcompos.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmime.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmloader.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmscript.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmstyle.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmsynth.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmusic.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmusic32.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dswave.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'streamci.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'quartz.dll' "$W_TMP/dxnt.cab"
|
|
|
|
w_try_regsvr devenum.dll
|
|
w_try_regsvr dmband.dll
|
|
w_try_regsvr dmcompos.dll
|
|
w_try_regsvr dmime.dll
|
|
w_try_regsvr dmloader.dll
|
|
w_try_regsvr dmscript.dll
|
|
w_try_regsvr dmstyle.dll
|
|
w_try_regsvr dmsynth.dll
|
|
w_try_regsvr dmusic.dll
|
|
w_try_regsvr dswave.dll
|
|
w_try_regsvr quartz.dll
|
|
|
|
w_override_dlls native devenum dmband dmcompos dmime dmloader dmscript dmstyle dmsynth dmusic dmusic32 dswave streamci quartz
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_directplay()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dplaysvr.exe' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dplayx.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpnet.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpnhpast.dll' "$W_TMP/dxnt.cab"
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dpwsockx.dll' "$W_TMP/dxnt.cab"
|
|
|
|
w_try_regsvr dplayx.dll
|
|
w_try_regsvr dpnet.dll
|
|
w_try_regsvr dpnhpast.dll
|
|
|
|
w_override_dlls native dplayx dpnet dpnhpast dpwsockx
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_directx9()
|
|
{
|
|
helper_directx_dl
|
|
|
|
# Stefan suggested that, when installing, one should override as follows:
|
|
# 1) use builtin wintrust (we don't run native properly somehow?)
|
|
# 2) disable mscoree (else if it's present some module misbehaves?)
|
|
# 3) override native any directx DLL whose Wine version doesn't register itself well yet
|
|
# For #3, I have no idea which DLLs don't register themselves well yet,
|
|
# so I'm just listing a few of the basic ones. Let's whittle that
|
|
# list down as soon as we can.
|
|
echo "You probably shouldn't be using this. It's VERY invasive."
|
|
echo "Use 'winetricks d3dx9' instead."
|
|
|
|
# Setting windows version to win2k apparently crashes the installer on OS X...
|
|
# See http://code.google.com/p/winezeug/issues/detail?id=71
|
|
if [ "`uname -s`" = "Darwin" ]
|
|
then
|
|
w_set_winver winxp
|
|
else
|
|
w_set_winver $DIRECTX_WINDOWS
|
|
fi
|
|
|
|
WINEDLLOVERRIDES="wintrust=b,mscoree=,ddraw,d3d8,d3d9,dsound,dinput=n" \
|
|
w_try $WINE "$W_CACHE"/$DIRECTX_NAME /t:"$W_TMP_WIN" $W_UNATTENDED_SLASH_Q
|
|
|
|
# How many of these do we really need?
|
|
# We should probably remove most of these...?
|
|
w_override_dlls native d3dim d3drm d3dx8 d3dx9_24 d3dx9_25 d3dx9_26 d3dx9_27 d3dx9_28 d3dx9_29
|
|
w_override_dlls native d3dx9_30 d3dx9_31 d3dx9_32 d3dx9_33 d3dx9_34 d3dx9_35 d3dx9_36 d3dx9_37
|
|
w_override_dlls native d3dx9_38 d3dx9_39 d3dx9_40 d3dx9_41 d3dx9_42 d3dxof
|
|
w_override_dlls native dciman32 ddrawex devenum dmband dmcompos dmime dmloader dmscript dmstyle
|
|
w_override_dlls native dmsynth dmusic dmusic32 dnsapi dplay dplayx dpnaddr dpnet dpnhpast dpnlobby
|
|
w_override_dlls native dswave dxdiagn mscoree msdmo qcap quartz streamci
|
|
w_override_dlls native dxdiag.exe
|
|
w_override_dlls builtin d3d8 d3d9 dinput dinput8 dsound
|
|
|
|
# Should be below, but fails on Wine when used silently.
|
|
#if [ $W_UNATTENDED_SLASH_Q ]
|
|
#then
|
|
# w_try $WINE "$W_TMP_WIN"/DXSETUP.exe /silent
|
|
#else
|
|
# w_try $WINE "$W_TMP_WIN"/DXSETUP.exe
|
|
#fi
|
|
|
|
w_try $WINE "$W_TMP_WIN"/DXSETUP.exe
|
|
|
|
w_unset_winver
|
|
|
|
# reenable mscoree, or other installs may fail, see issue 25
|
|
w_override_dlls builtin,native mscoree
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_divx()
|
|
{
|
|
# 6.8.2: 02203fdc4dddd13e789c39b22902837da31d2a1d ?
|
|
# 6.8.2: e36bf87c1675d0cf9169839bc0cd8f866b9db026 as of 4 Jun 2008 as http://download.divx.com/divx/DivXInstaller.exe
|
|
# 6.8.3: f4f4387ef89316aea440a29f3e24c1f1945e14af as of 20 Jun 2008 as http://download.divx.com/divx/abt/b1/DivXInstaller.exe
|
|
# 6.8.4: c5fcb1465a1bb24d1c104c2588fdb6706d1e1476 as of 10 Jul 2008 as http://download.divx.com/divx/abt/b1/DivXInstaller.exe
|
|
# 6.8.4: d28a2b041f4af45d22c4dedfe7608f2958cf997d as of 23 Aug 2008 as http://download.divx.com/divx/DivXInstaller.exe
|
|
|
|
# 7.? 4d91ef90ae26a6088851560c4263ef0cdbf09123 as of 22 Mar 2009 as http://download.divx.com/divx/DivXInstaller.exe
|
|
# 7.0.? 19c9ba3104025d1fab335e405e7f411dfbbcb477 as of 28 May 2009 as http://download.divx.com/divx/DivXInstaller.exe
|
|
# 7.0.? 786aef0f421df5e7358d2d740d9911f9afd055de as of 24 June 2009 as http://download.divx.com/divx/DivXInstaller.exe
|
|
# 7.0.? ad420bf8bf72e924e658c9c6ad6bba76b848fb79 as of 23 Sep 2009 as http://download.divx.com/divx/DivXInstaller.exe
|
|
# 7.0.? 3385aa8f6ba64ae32e06f651bbbea247bcc1a44d as of 12 Dec 2009 as http://download.divx.com/divx/DivXInstaller.exe
|
|
# d59422969a72790e92b6795e24e332f91ffacf94 as of 26 May 2010 as http://download.divx.com/divx/DivXInstaller.exe
|
|
# 3a2fe8ff2f9c5b5e527662af3badb42b460f6e62 as of 29 July 2010 as http://download.divx.com/divx/DivXInstaller.exe
|
|
# c105e92e2c329e281bdecfc3eecafd99a29cc0d5 as of 16 Sep 2010 as http://download.divx.com/divx/DivXInstaller.exe
|
|
w_download divx-7 http://download.divx.com/divx/DivXInstaller.exe c105e92e2c329e281bdecfc3eecafd99a29cc0d5
|
|
|
|
w_try $WINE "$W_CACHE"/divx-7/DivXInstaller
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dcom98()
|
|
{
|
|
w_die "Installing dcom98 is no longer needed or useful with modern wine."
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dmsynth()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dmsynth.dll' "$W_TMP/dxnt.cab"
|
|
|
|
w_try_regsvr dmsynth.dll
|
|
|
|
w_override_dlls native dmsynth
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dotnet11()
|
|
{
|
|
DOTNET_INSTALL_DIR="$W_WINDIR_UNIX/Microsoft.NET/Framework/v1.1.4322"
|
|
|
|
# Installer doesn't support Win64, and I can't find a x64 version on microsoft.com
|
|
if [ $W_ARCH = win64 ]
|
|
then
|
|
w_die "This package does not work on a 64-bit installation"
|
|
fi
|
|
|
|
# Wine now provides some fake dll's here that conflict.
|
|
# So check for a file that Wine should never provide, to determine if the install folder is Wine's fake one, or a real one.
|
|
# If real, rm -rf it:
|
|
if test $W_PACKAGE != dotnet11 && test -f "$DOTNET_INSTALL_DIR/ndpsetup.ico"
|
|
then
|
|
echo "prerequisite dotnet11 already installed, skipping"
|
|
return
|
|
else
|
|
rm -rf "$DOTNET_INSTALL_DIR"
|
|
fi
|
|
|
|
# need corefonts, else installer crashes
|
|
load_corefonts
|
|
|
|
# Wine tries to help Mono, which breaks .Net. However, this key isn't in older Wine versions (notably 1.2), and deleting fails if the key isn't present.
|
|
# Can't we all just play nice..
|
|
$WINE reg delete "HKLM\Software\Microsoft\.NETFramework\policy\v2.0" /f || true
|
|
$WINE reg delete "HKLM\Software\Microsoft\.NETFramework" /v InstallRoot /f || true
|
|
|
|
# Builtin fusion isn't good enough and sometimes causes install to fail. .Net will install a good one anyway...
|
|
rm -f "$W_WINDIR_UNIX/Microsoft.NET/Framework/v1.1.4322/fusion.dll"
|
|
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyId=262D25E3-F589-4842-8157-034D1E7CF3A3
|
|
w_download dotnet11 http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe 16a354a2207c4c8846b617cbc78f7b7c1856340e
|
|
# Using builtin regsvcs.exe to workaround http://bugs.winehq.org/show_bug.cgi?id=25120
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
WINEDLLOVERRIDES="regsvcs.exe=b" w_try $WINE "$W_CACHE"/dotnet11/dotnetfx.exe /q /C:"install /q"
|
|
else
|
|
WINEDLLOVERRIDES="regsvcs.exe=b" w_try $WINE "$W_CACHE"/dotnet11/dotnetfx.exe
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dotnet11sdk()
|
|
{
|
|
load_dotnet11
|
|
|
|
w_warn "Installer hangs at end... not sure if it works fully."
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=9B3A2CA6-3647-4070-9F41-A333C6B9181D
|
|
w_download dotnet11sdk http://download.microsoft.com/download/5/2/0/5202f918-306e-426d-9637-d7ee26fbe507/setup.exe 9509b14924bcaf84a7780de3f6ad7894004c3450
|
|
cd "$W_CACHE"/dotnet11sdk
|
|
w_try $WINE setup.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dotnet20()
|
|
{
|
|
load_fontfix
|
|
|
|
# If this is just a dependency check, don't re-install
|
|
if test $W_PACKAGE != dotnet20 && test -f "$W_WINDIR_UNIX"/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
|
|
then
|
|
echo "prerequisite dotnet20 already installed, skipping"
|
|
return
|
|
fi
|
|
w_warn "Instaling .net 2.0 runtime. Can take several minutes. See http://wiki.winehq.org/MicrosoftDotNet for tips."
|
|
|
|
# Recipe from http://bugs.winehq.org/show_bug.cgi?id=10467#c57
|
|
load_gecko
|
|
w_set_winver win2k
|
|
# See http://kegel.com/wine/l_intl-sh.txt for how l_intl.nls was generated
|
|
w_download dotnet20 http://kegel.com/wine/l_intl.nls 0d2e3f025bcdf852b192c9408a361ac2659fa249
|
|
w_try cp -f "$W_CACHE"/dotnet20/l_intl.nls "$W_SYSTEM32_DLLS"
|
|
|
|
# Wine tries to help Mono, which breaks .Net. However, this key isn't in older Wine versions (notably 1.2), and deleting fails if the key isn't present.
|
|
# Can't we all just play nice..
|
|
$WINE reg delete "HKLM\Software\Microsoft\.NETFramework\policy\v2.0" /f || true
|
|
$WINE reg delete "HKLM\Software\Microsoft\.NETFramework" /v InstallRoot /f || true
|
|
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5
|
|
w_download dotnet20 http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe a3625c59d7a2995fb60877b5f5324892a1693b2a
|
|
if [ "$W_UNATTENDED_SLASH_Q"x = ""x ]
|
|
then
|
|
w_try $WINE "$W_CACHE"/dotnet20/dotnetfx.exe
|
|
else
|
|
w_try $WINE "$W_CACHE"/dotnet20/dotnetfx.exe /q /c:"install.exe /q"
|
|
fi
|
|
w_unset_winver
|
|
|
|
# We can't stop installing dotnet20 in win2K mode until wine supports
|
|
# reparse/junction points
|
|
# (see http://bugs.winehq.org/show_bug.cgi?id=10467#c57 )
|
|
# so for now just remove that file.
|
|
# See http://bugs.winehq.org/show_bug.cgi?id=16577
|
|
# This affects Victoria 2 demo, see http://forum.paradoxplaza.com/forum/showthread.php?p=11523967
|
|
rm -f "$W_SYSTEM32_DLLS"/msvc?80.dll
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dotnet20sp2()
|
|
{
|
|
if w_workaround_wine_bug 22521
|
|
then
|
|
w_warn "dotnet20sp2 does not currently install properly in wine. Please use dotnet20 instead."
|
|
fi
|
|
|
|
load_fontfix
|
|
|
|
# Recipe from http://bugs.winehq.org/show_bug.cgi?id=10467#c57
|
|
# See http://kegel.com/wine/l_intl-sh.txt for how l_intl.nls was generated
|
|
w_download dotnet20 http://kegel.com/wine/l_intl.nls 0d2e3f025bcdf852b192c9408a361ac2659fa249
|
|
w_try cp -f "$W_CACHE"/dotnet20/l_intl.nls "$W_SYSTEM32_DLLS"
|
|
|
|
# Wine tries to help Mono, which breaks .Net. However, this key isn't in older Wine versions (notably 1.2), and deleting fails if the key isn't present.
|
|
# Can't we all just play nice..
|
|
$WINE reg delete "HKLM\Software\Microsoft\.NETFramework\policy\v2.0" /f || true
|
|
$WINE reg delete "HKLM\Software\Microsoft\.NETFramework" /v InstallRoot /f || true
|
|
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=5B2C0358-915B-4EB5-9B1D-10E506DA9D0F
|
|
w_download dotnet20 http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe 22d776d4d204863105a5db99e8b8888be23c61a7
|
|
if [ "$W_UNATTENDED_SLASH_Q"x = ""x ]
|
|
then
|
|
w_try $WINE "$W_CACHE"/dotnet20/NetFx20SP2_x86.exe
|
|
else
|
|
w_try $WINE "$W_CACHE"/dotnet20/NetFx20SP2_x86.exe /q /c:"install.exe /q"
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dotnet20sdk()
|
|
{
|
|
load_dotnet20
|
|
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=9B3A2CA6-3647-4070-9F41-A333C6B9181D
|
|
w_download dotnet20sdk http://download.microsoft.com/download/c/4/b/c4b15d7d-6f37-4d5a-b9c6-8f07e7d46635/setup.exe 4e4b1072b5e65e855358e2028403f2dc52a62ab4
|
|
cd "$W_CACHE"/dotnet20sdk
|
|
w_try $WINE setup.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dotnet30()
|
|
{
|
|
# If this is just a dependency check, don't re-install
|
|
if test $W_PACKAGE != dotnet30 && test -d "$W_WINDIR_UNIX/Microsoft.NET/Framework/v3.0/Microsoft .NET Framework 3.0"
|
|
then
|
|
echo "prerequisite dotnet30 already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
w_warn "Instaling .net 3.0 runtime. Can take 15-30 minutes. See http://wiki.winehq.org/MicrosoftDotNet for tips."
|
|
load_dotnet20
|
|
w_set_winver winxp
|
|
|
|
# http://msdn.microsoft.com/en-us/netframework/bb264589.aspx
|
|
w_download dotnet30 http://download.microsoft.com/download/3/F/0/3F0A922C-F239-4B9B-9CB0-DF53621C57D9/dotnetfx3.exe f3d2c3c7e4c0c35450cf6dab1f9f2e9e7ff50039
|
|
|
|
# AF's workaround to avoid long pause
|
|
LANGPACKS_BASE_PATH="${W_WINDIR_UNIX}/SYSMSICache/Framework/v3.0"
|
|
test -d "${LANGPACKS_BASE_PATH}" || mkdir -p "${LANGPACKS_BASE_PATH}"
|
|
for lang in ar cs da de el es fi fr he it jp ko nb nl pl pt-BR pt-PT ru \
|
|
sv tr zh-CHS zh-CHT
|
|
do
|
|
ln -sf "${W_SYSTEM32_DLLS}/spupdsvc.exe" "${LANGPACKS_BASE_PATH}/dotnetfx3langpack${lang}.exe"
|
|
done
|
|
|
|
#if w_workaround_wine_bug 25074
|
|
#then
|
|
# # Wine tries to help Mono, which breaks .Net. Can't we all just play nice...
|
|
# rm "$W_WINDIR_UNIX/Microsoft.NET/Framework/v1.1.4322/fusion.dll"
|
|
# rm -rf "$W_WINDIR_UNIX/Microsoft.NET/Framework/v4.0.30319"
|
|
# ls -l "$W_WINDIR_UNIX"/Microsoft.NET/Framework
|
|
# fi
|
|
|
|
if [ "$W_UNATTENDED_SLASH_Q"x = ""x ]
|
|
then
|
|
w_try $WINE "$W_CACHE"/dotnet30/dotnetfx3.exe
|
|
else
|
|
w_try $WINE "$W_CACHE"/dotnet30/dotnetfx3.exe /q /c:"install.exe /q"
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dotnet35()
|
|
{
|
|
# According to AF's recipe, installing dotnet30 first works around msi bugs
|
|
load_dotnet30
|
|
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6
|
|
w_download dotnet35 http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe
|
|
|
|
# See also http://blogs.msdn.com/astebner/archive/2008/07/17/8745415.aspx
|
|
cd "$W_DRIVE_C"
|
|
w_try_cabextract "$W_CACHE"/dotnet35/dotnetfx35.exe
|
|
cd wcu/dotNetFramework
|
|
$WINE dotNetFx35setup.exe /lang:ENU
|
|
|
|
# FIXME: Do this only if the above commmand failed (not sure how to detect it... look for some file, I s'pose)
|
|
if w_workaround_wine_bug 25060
|
|
then
|
|
# Thanks to Louis for this partial recipe
|
|
#w_try $WINE reg add 'HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727' /v SP /t REG_DWORD /d 0001
|
|
cat > "$W_TMP"/sp1.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727]
|
|
"SP"=dword:00000001
|
|
|
|
_EOF_
|
|
w_try $WINE regedit "$W_TMP"/sp1.reg
|
|
cd "$W_DRIVE_C"/wcu/dotNetFramework/dotNetFX35/x86
|
|
w_try_cabextract netfx35_x86.exe
|
|
w_try $WINE msiexec /i vs_setup.msi ADDEPLOY=1
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
do_droid() {
|
|
w_download . ${DROID_URL}$1';hb=HEAD' $3 $1
|
|
w_try cp -f "$W_CACHE"/$1 "$W_FONTSDIR_UNIX"
|
|
w_register_font $1 "$2"
|
|
}
|
|
|
|
load_droid()
|
|
{
|
|
# See http://en.wikipedia.org/wiki/Droid_(font)
|
|
DROID_URL='http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=data/fonts/'
|
|
|
|
do_droid DroidSans-Bold.ttf "Droid Sans Bold" ada4e79c592f3c54546b7587b48f2b232d95ce2f
|
|
do_droid DroidSansFallback.ttf "Droid Sans Fallback" 5065cce92e8420232db95ab3ba421e462b09b965
|
|
do_droid DroidSansJapanese.ttf "Droid Sans Japanese" b3a248c11692aa88a30eb25df425b8910fe05dc5
|
|
do_droid DroidSansMono.ttf "Droid Sans Mono" f0815c6f36c72be1d0f2f5e2b82fa85c8bf95655
|
|
do_droid DroidSans.ttf "Droid Sans" da5b3c7758a2c8fbc4775beb69d7150493c7d312
|
|
do_droid DroidSerif-BoldItalic.ttf "Droid Serif Bold Italic" c1602dc11bf0f7131aec21c7c3888195ad78e486
|
|
do_droid DroidSerif-Bold.ttf "Droid Serif Bold" d7896b9c0723299553e95a00d27cbe52f7515c8c
|
|
do_droid DroidSerif-Italic.ttf "Droid Serif Italic" 117941be102c8f38a86a70ebccaecb8078f7027e
|
|
do_droid DroidSerif-Regular.ttf "Droid Serif" 7f243858e496ed1bb1faca9f3a7bbe52defcbb5d
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dxsdk_nov2006()
|
|
{
|
|
w_download . http://download.microsoft.com/download/9/e/5/9e5bfc66-a621-4e0d-8bfe-6688058c3f00/dxsdk_aug2006.exe
|
|
load_vcrun6 # for mfc42u
|
|
echo "Be patient, the 'installing new services' step at the end takes about five minutes"
|
|
# Yes, they really mixed cabextract and unzip into one package...
|
|
cd "$W_TMP"
|
|
w_try_cabextract "$W_CACHE"/dxsdk_aug2006.exe
|
|
w_try_unzip dxsdk.exe
|
|
w_try $WINE Setup.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dsound()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'dsound.dll' "$W_TMP/dxnt.cab"
|
|
|
|
w_try_regsvr dsound.dll
|
|
|
|
w_override_dlls native dsound
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_dsoundbug9612()
|
|
{
|
|
echo "Enabling DirectSound workaround for bug #9612"
|
|
cat > "$W_TMP"/dsoundmaxshadow.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\DirectSound]
|
|
"MaxShadowSize"="0"
|
|
|
|
_EOF_
|
|
w_try $WINE regedit "$W_TMP"/dsoundmaxshadow.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_eufonts()
|
|
{
|
|
# https://www.microsoft.com/downloads/details.aspx?FamilyID=0ec6f335-c3de-44c5-a13d-a1e7cea5ddea&displaylang=en
|
|
w_download . http://download.microsoft.com/download/a/1/8/a180e21e-9c2b-4b54-9c32-bf7fd7429970/EUupdate.EXE 9b076c40cb63aa0d8512aa8e610ba11d3466e441
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/EUupdate.EXE
|
|
w_try cp -f "$W_TMP"/*.ttf "$W_FONTSDIR_UNIX"
|
|
|
|
w_register_font ArialBI.ttf "Arial Bold Italic (TrueType)"
|
|
w_register_font ArialI.ttf "Arial Italic (TrueType)"
|
|
w_register_font Arial.ttf "Arial (TrueType)"
|
|
w_register_font TimesBd.ttf "Times New Roman Bold (TrueType)"
|
|
w_register_font TimesBI.ttf "Times New Roman Bold Italic (TrueType)"
|
|
w_register_font TimesI.ttf "Times New Roman Italic (TrueType)"
|
|
w_register_font Times.ttf "Times New Roman (TrueType)"
|
|
w_register_font trebucbd.ttf "Trebuchet Bold (TrueType)"
|
|
w_register_font trebucbi.ttf "Trebuchet Bold Italic (TrueType)"
|
|
w_register_font trebucit.ttf "Trebuchet Italic (TrueType)"
|
|
w_register_font trebuc.ttf "Trebuchet (TrueType)"
|
|
w_register_font Verdanab.ttf "Verdana Bold (TrueType)"
|
|
w_register_font Verdanai.ttf "Verdana Italian (TrueType)"
|
|
w_register_font Verdana.ttf "Verdana (TrueType)"
|
|
w_register_font Verdanaz.ttf "Verdana Bold Italic (TrueType)"
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_fakechinese()
|
|
{
|
|
load_wenquanyi
|
|
# Loads Wenquanyi fonts and sets aliases for Microsoft Chinese fonts
|
|
# Aliases to set:
|
|
# Microsoft JhengHei --> WenQuanYi Micro Hei
|
|
# Microsoft YaHei --> WenQuanYi Micro Hei
|
|
# SimHei --> WenQuanYi Micro Hei
|
|
|
|
cat > "$W_TMP"/faketraditionalchinese.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
|
|
"Microsoft JhengHei"="WenQuanYi Micro Hei"
|
|
"Microsoft YaHei"="WenQuanYi Micro Hei"
|
|
"SimHei"="WenQuanYi Micro Hei"
|
|
|
|
_EOF_
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\faketraditionalchinese.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_fakejapanese()
|
|
{
|
|
load_takao
|
|
# Loads Takao fonts and sets aliases for MS Gothic and MS PGothic, mainly for Japanese language support
|
|
# Aliases to set:
|
|
# MS Gothic --> TakaoGothic
|
|
# MS PGothic --> TakaoPGothic
|
|
# MS Mincho --> TakaoMincho
|
|
# MS PMincho --> TakaoPMincho
|
|
# These aliases were taken from what was listed in Ubuntu's fontconfig definitions.
|
|
|
|
cat > "$W_TMP"/fakejapanese.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
|
|
"MS Gothic"="TakaoGothic"
|
|
"MS PGothic"="TakaoPGothic"
|
|
"MS Mincho"="TakaoMincho"
|
|
"MS PMincho"="TakaoPMincho"
|
|
|
|
_EOF_
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\fakejapanese.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_fakekorean()
|
|
{
|
|
load_baekmuk
|
|
# Loads Baekmuk fonts and sets as an alias for Gulim, Dotum, and Batang for Korean language support
|
|
# Aliases to set:
|
|
# Gulim --> Baekmuk Gulim
|
|
# GulimChe --> Baekmuk Gulim
|
|
# Batang --> Baekmuk Batang
|
|
# BatangChe --> Baekmuk Batang
|
|
# Dotum --> Baekmuk Dotum
|
|
# DotumChe --> Baekmuk Dotum
|
|
|
|
cat > "$W_TMP"/fakekorean.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
|
|
"Gulim"="Baekmuk Gulim"
|
|
"GulimChe"="Baekmuk Gulim"
|
|
"Batang"="Baekmuk Batang"
|
|
"BatangChe"="Baekmuk Batang"
|
|
"Dotum"="Baekmuk Dotum"
|
|
"DotumChe"="Baekmuk Dotum"
|
|
|
|
_EOF_
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\fakekorean.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_firefox()
|
|
{
|
|
w_download . "http://releases.mozilla.org//pub/mozilla.org/firefox/releases/3.6.12/win32/en-US/Firefox%20Setup%203.6.12.exe" c10562f70de6e0dc656a949931ef9f479623fcd6 "Firefox Setup 3.6.12.exe"
|
|
if [ "$W_UNATTENDED_SLASH_Q"x = ""x ]
|
|
then
|
|
w_try $WINE "$W_CACHE"/"Firefox Setup 3.6.12.exe"
|
|
else
|
|
w_try $WINE "$W_CACHE"/"Firefox Setup 3.6.12.exe" -ms
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_ffdshow()
|
|
{
|
|
# ffdshow
|
|
w_download . $SOURCEFORGE/ffdshow-tryout/ffdshow_beta5_rev2033_20080705_clsid.exe 6da6837e2f400923ff5294a6591a88a3eee5ee40
|
|
w_try $WINE "$W_CACHE"/ffdshow_beta5_rev2033_20080705_clsid.exe $W_UNATTENDED_SLASH_SILENT
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_flash()
|
|
{
|
|
# If this is just a dependency check, don't re-install
|
|
if test $W_PACKAGE != flash && test -f "$W_SYSTEM32_DLLS"/Macromed/Flash/flashplayer.xpt
|
|
then
|
|
echo "prerequisite flash already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
# www.adobe.com/products/flashplayer/
|
|
|
|
# Active X plugin
|
|
# http://blogs.adobe.com/psirt/2008/03/preparing_for_april_flash_play.html
|
|
# http://fpdownload.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_active_x.msi
|
|
# 2008-04-01: old version sha1sum f4dd1c0c715b791db2c972aeba90d3b78372996a
|
|
# 2008-04-18: new version sha1sum 04ac79c4f1eb1e1ca689f27fa71f12bb5cd11cc2
|
|
# Version 10 http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_ax.exe
|
|
# 2008-11-27: sha1sum 7f6850ae815e953311bb94a8aa9d226f97a646dd
|
|
# 2009-02-27: sha1sum 86745020a25edc9695a1a6a4d59eae375665a0b3
|
|
# 2009-07-31: sha1sum 11a81ad1b19344c28b1e1249169f15dfbd2a04f5
|
|
# 2009-12-09: sha1sum f4ec0e95099e354fd01cd3bb27c202f54932dc70
|
|
# 2010-02-20: sha1sum e05ca1999e820b3fa2ca16fc27bc65183d275681
|
|
# 2010-03-15: sha1sum 901b53ebe26c62c0bd7fc7dc400552ce335685bb
|
|
# 2010-06-24: sha1sum 6de519569137ec2ba3a4eed59f4052c4d944869c
|
|
# 2010-08-11: sha1sum bd3a91fe450a800dbbc8d070159dc0a599043652
|
|
# 2010-10-21: sha1sum c8bc6b4ead9538aeba24c9a5908dc1912ad443c7
|
|
# 2010-11-04: sha1sum 58412bcc83e349be50cafe0e1c46e19088620866
|
|
w_download flash http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_ax.exe 58412bcc83e349be50cafe0e1c46e19088620866
|
|
cd "$W_CACHE"/flash
|
|
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
w_try $WINE install_flash_player_ax.exe /install
|
|
else
|
|
w_try $WINE install_flash_player_ax.exe
|
|
fi
|
|
|
|
# Mozilla / Firefox plugin
|
|
# 2008-07-22: sha1sum 1e6f7627784a5b791e99ae9ad63133dc11c7940b
|
|
# 2008-11-27: sha1sum 20ec0300a8cae19105c903a7ec6c0801e016beb0
|
|
# 2009-02-27: sha1sum 770db9ad471ffd4357358bc16ff0bb6c98d71e5d
|
|
# 2009-07-31: sha1sum 9590fb87cc33d3a3a1f2f42a1918f06b9f0fd88d
|
|
# 2009-12-09: sha1sum ccb4811b1cc26721c4abb2e5a080868acdee7b87
|
|
# 2010-02-20: sha1sum f1df1ab84b61e7f2c3eea0a959d2115dd001816b
|
|
# 2010-03-16: sha1sum e2fe55927c4068b0a07636742814682c0a2aa0fe
|
|
# 2010-06-24: sha1sum a419339ada03076ea0a197b28011b87055c45478
|
|
# 2010-08-11: sha1sum cb011ab4c74d222c8ddb48171a8aa3b5380f8d5a
|
|
# 2010-10-21: sha1sum 26985ca9f8f9c9926d807b591a28cdf2cc35a76a
|
|
# 2010-11-04: sha1sum 09f2491c5bec7286155234f4e6e1af70c7cef78f
|
|
w_download flash http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player.exe 09f2491c5bec7286155234f4e6e1af70c7cef78f
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
w_try $WINE install_flash_player.exe /install
|
|
else
|
|
w_try $WINE install_flash_player.exe
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_fontfix()
|
|
{
|
|
# some versions of ukai.ttf and uming.ttf crash .net and picasa
|
|
# See http://bugs.winehq.org/show_bug.cgi?id=7098#c9
|
|
# Could fix globally, but that needs root, so just fix for wine
|
|
if test -f /usr/share/fonts/truetype/arphic/ukai.ttf
|
|
then
|
|
gotsum=`$SHA1SUM < /usr/share/fonts/truetype/arphic/ukai.ttf | sed 's/ .*//'`
|
|
# FIXME: do all affected versions of the font have same sha1sum as Gutsy? Seems unlikely.
|
|
if [ "$gotsum"x = "96e1121f89953e5169d3e2e7811569148f573985"x ]
|
|
then
|
|
w_download . https://launchpadlibrarian.net/1499628/ttf-arphic-ukai_0.1.20060108.orig.tar.gz 92e577602d71454a108968e79ab667451f3602a2
|
|
cd "$W_TMP/"
|
|
gunzip -dc "$W_CACHE/ttf-arphic-ukai_0.1.20060108.orig.tar.gz" | tar -xf -
|
|
w_try mv ttf-arphic-ukai-0.1.20060108/*.ttf "$W_FONTSDIR_UNIX"
|
|
cd "$olddir"
|
|
fi
|
|
fi
|
|
|
|
if test -f /usr/share/fonts/truetype/arphic/uming.ttf
|
|
then
|
|
gotsum=`$SHA1SUM < /usr/share/fonts/truetype/arphic/uming.ttf | sed 's/ .*//'`
|
|
if [ "$gotsum"x = "2a4f4a69e343c21c24d044b2cb19fd4f0decc82c"x ]
|
|
then
|
|
w_download . https://launchpadlibrarian.net/1564410/ttf-arphic-uming_0.1.20060108.orig.tar.gz 1439cdd731906e9e5311f320c2cb33262b24ef91
|
|
cd "$W_TMP/"
|
|
gunzip -dc "$W_CACHE/ttf-arphic-uming_0.1.20060108.orig.tar.gz" | tar -xf -
|
|
w_try mv ttf-arphic-uming-0.1.20060108/*.ttf "$W_FONTSDIR_UNIX"
|
|
cd "$olddir"
|
|
fi
|
|
fi
|
|
|
|
# Focht says Samyak is bad news, and font substitution isn't a good workaround.
|
|
# I've seen psdkwin7 setup crash because of this; the symptom was a messagebox saying
|
|
# SDKSetup encountered an error: The type initializer for 'Microsoft.WizardFramework.WizardSettings' threw an exception
|
|
# and WINEDEBUG=+relay,+seh shows an exception very quickly after
|
|
# Call KERNEL32.CreateFileW(0c83b36c L"Z:\\USR\\SHARE\\FONTS\\TRUETYPE\\TTF-ORIYA-FONTS\\SAMYAK-ORIYA.TTF",80000000,00000001,00000000,00000003,00000080,00000000) ret=70d44091
|
|
if xlsfonts 2>/dev/null | egrep -i "samyak|oriya"
|
|
then
|
|
w_die "Please uninstall the Samyak/Oriya font, e.g. 'sudo dpkg -r ttf-oriya-fonts', then log out and log in again. That font causes strange crashes in .net programs."
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
load_forcemono()
|
|
{
|
|
# For wine/mono debugging
|
|
w_override_dlls native mscoree.dll
|
|
w_override_dlls disabled mscorsvw.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
load_fs_disable()
|
|
{
|
|
cat > "$W_TMP"/fs_disable.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Control Panel\Desktop]
|
|
"FontSmoothing"="0"
|
|
"FontSmoothingGamma"=dword:00000578
|
|
"FontSmoothingOrientation"=dword:00000001
|
|
"FontSmoothingType"=dword:00000000
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\fs_disable.reg
|
|
}
|
|
#----------------------------------------------------------------
|
|
load_fs_grayscale()
|
|
{
|
|
cat > "$W_TMP"/fs_grayscale.reg <<_EOF_
|
|
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Control Panel\Desktop]
|
|
"FontSmoothing"="2"
|
|
"FontSmoothingGamma"=dword:00000578
|
|
"FontSmoothingOrientation"=dword:00000001
|
|
"FontSmoothingType"=dword:00000001
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\fs_grayscale.reg
|
|
}
|
|
#----------------------------------------------------------------
|
|
load_fs_bgr()
|
|
{
|
|
cat > "$W_TMP"/fs_bgr.reg <<_EOF_
|
|
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Control Panel\Desktop]
|
|
"FontSmoothing"="2"
|
|
"FontSmoothingGamma"=dword:00000578
|
|
"FontSmoothingOrientation"=dword:00000000
|
|
"FontSmoothingType"=dword:00000002
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\fs_bgr.reg
|
|
}
|
|
#----------------------------------------------------------------
|
|
load_fs_rgb()
|
|
{
|
|
cat > "$W_TMP"/fs_rgb.reg <<_EOF_
|
|
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Control Panel\Desktop]
|
|
"FontSmoothing"="2"
|
|
"FontSmoothingGamma"=dword:00000578
|
|
"FontSmoothingOrientation"=dword:00000001
|
|
"FontSmoothingType"=dword:00000002
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\fs_rgb.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_gecko()
|
|
{
|
|
w_skip_windows gecko && return
|
|
|
|
# Load the HTML rendering Engine (Gecko)
|
|
# FIXME: shouldn't this code be in some script installed
|
|
# as part of Wine instead of in winetricks?
|
|
# (e.g. we hardcode gecko's url here, but it's normally
|
|
# only hardcoded in wine.inf, and fetched from the regisw_try thereafter,
|
|
# so we're adding a maintenance burden here.)
|
|
case `$WINE --version` in
|
|
wine-0*|wine-1.0*|wine-1.1|wine-1.1.?|wine-1.1.11)
|
|
GECKO_DIR="$W_WINDIR_UNIX"
|
|
GECKO_VERSION=0.1.0
|
|
GECKO_SHA1SUM=c16f1072dc6b0ced20935662138dcf019a38cd56
|
|
;;
|
|
wine-1.1.1[234]*)
|
|
GECKO_DIR="$W_WINDIR_UNIX"
|
|
GECKO_VERSION=0.9.0
|
|
GECKO_SHA1SUM=5cf410ff7fdd3f9d625f481f9d409968728d3d09
|
|
;;
|
|
wine-1.1.1[56789]*|wine-1.1.2[0123456]*)
|
|
GECKO_DIR="$W_WINDIR_UNIX"
|
|
GECKO_VERSION=0.9.1
|
|
GECKO_SHA1SUM=9a49fc691740596517e381b47096a4bdf19a87d8
|
|
;;
|
|
wine-1.1.2[789]*|wine-1.1.[34]*|wine-1.2*|wine-1.3|wine-1.3.[01]|wine-1.3.[0]-*)
|
|
GECKO_DIR="$W_SYSTEM32_DLLS"
|
|
GECKO_VERSION=1.0.0
|
|
GECKO_ARCH=-x86
|
|
GECKO_SHA1SUM=afa22c52bca4ca77dcb9edb3c9936eb23793de01
|
|
;;
|
|
*)
|
|
GECKO_DIR="$W_SYSTEM32_DLLS"
|
|
GECKO_VERSION=1.1.0
|
|
GECKO_ARCH=-x86
|
|
GECKO_SHA1SUM=1b6c637207b6f032ae8a52841db9659433482714
|
|
GECKO64_DIR="$SYSTEM64_DLLS"
|
|
GECKO64_ARCH=-x86_64
|
|
GECKO64_SHA1SUM=55b4b60cd2a48631d6236fb411c3a94d806d9906
|
|
;;
|
|
esac
|
|
|
|
# If this is just a dependency check, don't re-install
|
|
if test $W_PACKAGE != ie6 && test -f "$GECKO_DIR/gecko/$GECKO_VERSION/wine_gecko/nspr4.dll"
|
|
then
|
|
echo "prerequisite gecko already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
THEWINE=`which $WINE`
|
|
WINEDIR="`dirname $THEWINE`"
|
|
GECKOCAB="wine_gecko-$GECKO_VERSION$GECKO_ARCH.cab"
|
|
|
|
for candidate in "$WINEDIR/../share/wine/gecko/$GECKOCAB" "$WINEDIR/../gecko/$GECKOCAB"
|
|
do
|
|
gotsum=`$SHA1SUM 2>/dev/null < "$candidate" | sed 's/ .*//'`
|
|
if [ "$gotsum"x = "$GECKO_SHA1SUM"x ]
|
|
then
|
|
GECKOPATH="$candidate"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if test -z "$GECKOPATH"
|
|
then
|
|
# FIXME: busted if using curl!
|
|
w_download . "http://downloads.sourceforge.net/wine/wine_gecko-$GECKO_VERSION$GECKO_ARCH.cab" \
|
|
$GECKO_SHA1SUM wine_gecko-$GECKO_VERSION$GECKO_ARCH.cab
|
|
GECKOPATH="$W_CACHE"/wine_gecko-$GECKO_VERSION$GECKO_ARCH.cab
|
|
fi
|
|
|
|
cat > "$W_TMP"/geckopath.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\\Software\\Wine\\MSHTML\\$GECKO_VERSION]
|
|
_EOF_
|
|
|
|
printf '"GeckoPath"="' >>"$W_TMP"/geckopath.reg
|
|
case $GECKO_VERSION in
|
|
0.*)
|
|
printf 'c:\\windows\\gecko\\'$GECKO_VERSION'\\wine_gecko\\"' |
|
|
sed "s/\\\\/\\\\\\\\/g" >> "$W_TMP"/geckopath.reg
|
|
;;
|
|
1.*)
|
|
printf 'c:\\windows\\system32\\gecko\\'$GECKO_VERSION'\\wine_gecko\\"' |
|
|
sed "s/\\\\/\\\\\\\\/g" >> "$W_TMP"/geckopath.reg
|
|
;;
|
|
esac
|
|
|
|
# extract the files
|
|
mkdir -p "$GECKO_DIR/gecko/$GECKO_VERSION"
|
|
cd "$GECKO_DIR/gecko/$GECKO_VERSION"
|
|
w_try_cabextract "$GECKOPATH"
|
|
cd "$olddir"
|
|
|
|
# Repeat for 64-bit. You don't need to set registry, though..
|
|
if [ $W_ARCH = win64 ]
|
|
then
|
|
GECKOCAB="wine_gecko-$GECKO_VERSION$GECKO64_ARCH.cab"
|
|
for candidate in "$WINEDIR/../share/wine/gecko/$GECKOCAB" "$WINEDIR/../gecko/$GECKOCAB"
|
|
do
|
|
gotsum=`$SHA1SUM 2>/dev/null < "$candidate" | sed 's/ .*//'`
|
|
if [ "$gotsum"x = "$GECKO64_SHA1SUM"x ]
|
|
then
|
|
GECKOPATH="$candidate"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if test -z "$GECKOPATH"
|
|
then
|
|
# FIXME: busted if using curl!
|
|
w_download . "http://downloads.sourceforge.net/wine/wine_gecko-$GECKO_VERSION$GECKO64_ARCH.cab" \
|
|
$GECKO64_SHA1SUM wine_gecko-$GECKO_VERSION$GECKO64_ARCH.cab
|
|
GECKOPATH="$W_CACHE"/wine_gecko-$GECKO_VERSION$GECKO64_ARCH.cab
|
|
fi
|
|
|
|
mkdir -p "$GECKO64_DIR/gecko/$GECKO_VERSION"
|
|
cd "$GECKO64_DIR/gecko/$GECKO_VERSION"
|
|
w_try_cabextract "$GECKOPATH"
|
|
cd "$olddir"
|
|
fi
|
|
|
|
# set install-path
|
|
w_try_regedit "$W_TMP_WIN"\\geckopath.reg
|
|
|
|
# register the dll, since it was disabled before
|
|
w_try_regsvr mshtml
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_gecko_dbg()
|
|
{
|
|
# Load the HTML rendering Engine (Gecko), with debugging symbols
|
|
# FIXME: shouldn't this code be in some script installed
|
|
# as part of Wine instead of in winetricks?
|
|
# (e.g. we hardcode gecko's url here, but it's normally
|
|
# only hardcoded in wine.inf, and fetched from the regisw_try thereafter,
|
|
# so we're adding a maintenance burden here.)
|
|
case `$WINE --version` in
|
|
wine-0*|wine-1.0*|wine-1.1|wine-1.1.?|wine-1.1.11)
|
|
w_die "There isn't a gecko debug build for your Wine version."
|
|
;;
|
|
wine-1.1.1[234]*)
|
|
GECKO_DIR="$W_WINDIR_UNIX"
|
|
GECKO_VERSION=0.9.0
|
|
GECKO_EXTENSION=cab
|
|
GECKO_SHA1SUM=23e354a82d7b7e61a6abe0384cc44669fbf92f86
|
|
;;
|
|
wine-1.1.1[56789]*|wine-1.1.2[0123456]*)
|
|
GECKO_DIR="$W_WINDIR_UNIX"
|
|
GECKO_VERSION=0.9.1
|
|
GECKO_EXTENSION=cab
|
|
GECKO_SHA1SUM=a9b58d3330f8c78524fe4683f348302bfce96ff4
|
|
;;
|
|
wine-1.1.2[789]*|wine-1.1.[34]*|wine-1.2*|wine-1.3|wine-1.3.[01]|wine-1.3.[01]-*)
|
|
GECKO_DIR="$W_SYSTEM32_DLLS"
|
|
GECKO_VERSION=1.0.0
|
|
GECKO_ARCH=-x86
|
|
GECKO_EXTENSION=cab
|
|
GECKO_SHA1SUM=2de16b443826295f646cd5d54313ca421fd71210
|
|
;;
|
|
*)
|
|
GECKO_DIR="$W_SYSTEM32_DLLS"
|
|
GECKO_VERSION=1.1.0
|
|
GECKO_ARCH=-x86
|
|
GECKO_EXTENSION=tar.bz2
|
|
GECKO_SHA1SUM=647a488b306f3865527ce03df3c16c06afce1677
|
|
GECKO64_DIR="$SYSTEM64_DLLS"
|
|
GECKO64_ARCH=-x86_64
|
|
GECKO64_SHA1SUM=d6b286e0066f3d08f0a3510bd7b506d7c5b3991d
|
|
;;
|
|
esac
|
|
|
|
if test ! -f "$W_CACHE"/wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.$GECKO_EXTENSION
|
|
then
|
|
# FIXME: busted if using curl!
|
|
w_download . "http://downloads.sourceforge.net/wine/wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.$GECKO_EXTENSION" $GECKO_SHA1SUM wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.$GECKO_EXTENSION
|
|
fi
|
|
|
|
cat > "$W_TMP"/geckopath.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\\Software\\Wine\\MSHTML\\$GECKO_VERSION]
|
|
_EOF_
|
|
|
|
printf '"GeckoPath"="' >>"$W_TMP"/geckopath.reg
|
|
case $GECKO_VERSION in
|
|
0.*)
|
|
printf 'c:\\windows\\gecko\\'$GECKO_VERSION'\\wine_gecko\\"' |
|
|
sed "s/\\\\/\\\\\\\\/g" >> "$W_TMP"/geckopath.reg
|
|
;;
|
|
1.*)
|
|
printf 'c:\\windows\\system32\\gecko\\'$GECKO_VERSION'\\wine_gecko\\"' |
|
|
sed "s/\\\\/\\\\\\\\/g" >> "$W_TMP"/geckopath.reg
|
|
;;
|
|
esac
|
|
|
|
# extract the files
|
|
mkdir -p "$GECKO_DIR/gecko/$GECKO_VERSION"
|
|
cd "$GECKO_DIR/gecko/$GECKO_VERSION"
|
|
if [ "$GECKO_EXTENSION" = "cab" ]
|
|
then
|
|
w_try_cabextract "$W_CACHE"/wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.cab
|
|
elif [ "$GECKO_EXTENSION" = "tar.bz2" ]
|
|
then
|
|
bunzip2 -cd "$W_CACHE"/wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.tar.bz2 | tar -xf -
|
|
if test $? -ne 0
|
|
then
|
|
w_die Gecko debug redistributable extraction failed
|
|
fi
|
|
else
|
|
w_die unrecognized Gecko debug redistributable extension
|
|
fi
|
|
|
|
cd "$olddir"
|
|
|
|
# Repeat for 64-bit. You don't need to set registry, though..
|
|
if [ $W_ARCH = win64 ]
|
|
then
|
|
if test ! -f "$W_CACHE"/wine_gecko-$GECKO_VERSION$GECKO64_ARCH-dbg.$GECKO_EXTENSION
|
|
then
|
|
# FIXME: busted if using curl!
|
|
w_download . "http://downloads.sourceforge.net/wine/wine_gecko-$GECKO_VERSION$GECKO64_ARCH-dbg.$GECKO_EXTENSION" $GECKO64_SHA1SUM wine_gecko-$GECKO_VERSION$GECKO64_ARCH-dbg.$GECKO_EXTENSION
|
|
fi
|
|
|
|
GECKOCAB="wine_gecko-$GECKO_VERSION$GECKO64_ARCH.cab"
|
|
for candidate in "$WINEDIR/../share/wine/gecko/$GECKOCAB" "$WINEDIR/../gecko/$GECKOCAB"
|
|
do
|
|
gotsum=`$SHA1SUM 2>/dev/null < "$candidate" | sed 's/ .*//'`
|
|
if [ "$gotsum"x = "$GECKO64_SHA1SUM"x ]
|
|
then
|
|
GECKOPATH="$candidate"
|
|
break
|
|
fi
|
|
done
|
|
|
|
mkdir -p "$GECKO64_DIR/gecko/$GECKO_VERSION"
|
|
cd "$GECKO64_DIR/gecko/$GECKO_VERSION"
|
|
bunzip2 -cd "$W_CACHE"/wine_gecko-$GECKO_VERSION$GECKO64_ARCH-dbg.tar.bz2 | tar -xf -
|
|
if test $? -ne 0
|
|
then
|
|
w_die Gecko debug redistributable extraction failed
|
|
fi
|
|
fi
|
|
|
|
# set install-path
|
|
w_try_regedit "$W_TMP_WIN"\\geckopath.reg
|
|
|
|
# register the dll, since it was disabled before
|
|
w_try_regsvr mshtml
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_gdiplus()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&displaylang=en
|
|
w_download gdiplus http://download.microsoft.com/download/a/b/c/abc45517-97a0-4cee-a362-1957be2f24e1/WindowsXP-KB975337-x86-ENU.exe b9a84bc3de92863bba1f5eb1d598446567fbc646
|
|
# Used to use $W_UNATTENDED_SLASH_Q, but that mean that in non-q
|
|
# mode, a mysterious "Extraction Complete" dialog was all user saw.
|
|
# Showing that isn't useful, so always use /q.
|
|
w_try $WINE "$W_CACHE"/gdiplus/WindowsXP-KB975337-x86-ENU.exe /extract:$W_TMP_WIN /q
|
|
# And then make it globally available.
|
|
w_try cp "$W_TMP/asms/10/msft/windows/gdiplus/gdiplus.dll" "$W_SYSTEM32_DLLS"
|
|
|
|
# For some reason, native,builtin isn't good enough...?
|
|
w_override_dlls native gdiplus
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_gfw()
|
|
{
|
|
# http://www.microsoft.com/games/en-us/live/pages/livejoin.aspx
|
|
w_download . http://download.microsoft.com/download/5/5/8/55846E20-4A46-4EF8-B272-7F988BC9090A/gfwlivesetupmin.exe 6f9e0ba052c68c8b51bb0e3ce6024d0e1c7b20b2
|
|
|
|
# FIXME: Depends on .Net 20, but is it really needed? For now, skip it.
|
|
w_try $WINE "$W_CACHE"/gfwlivesetupmin.exe /nodotnet $W_UNATTENDED_SLASH_Q
|
|
|
|
w_try w_call msasn1
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_glsl_disable()
|
|
{
|
|
echo "Disabling GLSL"
|
|
cat > "$W_TMP"/disableglsl.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"UseGLSL"="disabled"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\disableglsl.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_glsl_enable()
|
|
{
|
|
echo "Enabling GLSL"
|
|
cat > "$W_TMP"/enableglsl.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_CURRENT_USER\Software\Wine\Direct3D]
|
|
"UseGLSL"="enabled"
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\enableglsl.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_glut()
|
|
{
|
|
w_download . http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip fb4731885c05b3cf2c79e85aabe8fc9949616ef4
|
|
w_try_unzip -d "$W_DRIVE_C" "$W_CACHE"/glut-3.7.6-bin.zip
|
|
w_try cp "$W_DRIVE_C"/glut-3.7.6-bin/glut32.dll "$W_SYSTEM32_DLLS"
|
|
w_warn "If you want to compile glut programs, add c:/glut-3.7.6-bin to LIB and INCLUDE"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_hosts()
|
|
{
|
|
# Create fake system32\drivers\etc\hosts and system32\drivers\etc\services files.
|
|
# The hosts file is used to map network names to IP addresses without DNS.
|
|
# The services file is used map service names to network ports.
|
|
# Some apps depend on these files, but they're not implemented in wine.
|
|
# Fortunately, empty files in the correct location satisfy those apps.
|
|
# See http://bugs.winehq.org/show_bug.cgi?id=12076
|
|
|
|
# It's in system32 for both win32/win64
|
|
mkdir -p "$W_WINDIR_UNIX"/system32/drivers/etc
|
|
touch "$W_WINDIR_UNIX"/system32/drivers/etc/hosts
|
|
touch "$W_WINDIR_UNIX"/system32/drivers/etc/services
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
set_heapcheck() {
|
|
cat > "$W_TMP"/heapcheck.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager]
|
|
"GlobalFlag"=dword:00200030
|
|
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\heapcheck.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_icodecs()
|
|
{
|
|
# Original source, ftp://download.intel.com/support/createshare/camerapack/codinstl.exe, had same checksum
|
|
w_download . "http://codec.alshow.co.kr/Down/codinstl.exe" 2c5d64f472abe3f601ce352dcca75b4f02996f8a
|
|
w_try $WINE "$W_CACHE"/"codinstl.exe"
|
|
w_try_regsvr "$W_SYSTEM32_DLLS/ir50_32.dll"
|
|
# Work around bug in codec's installer?
|
|
# http://support.britannica.com/other/touchthesky/win/issues/TSTUw_150.htm
|
|
# http://appdb.winehq.org/objectManager.php?sClass=version&iId=7091
|
|
w_override_dlls native ir50_32.dll
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_ie6()
|
|
{
|
|
# Installer doesn't support Win64, and I can't find a x64 version on microsoft.com
|
|
if [ $W_ARCH = win64 ]
|
|
then
|
|
w_die "This package does not work on a 64-bit installation"
|
|
fi
|
|
|
|
w_download ie6 http://browsers-us.mirrors.zensoft.net/ie/win32/6.0/ie60.exe 8e483db28ff01a7cabd39147ab6c59753ea1f533
|
|
|
|
cd "$W_TMP"
|
|
$WINE "$W_CACHE"/ie6/ie60.exe
|
|
|
|
load_msls31
|
|
|
|
# Unregister Wine IE
|
|
if [ ! -f "$W_SYSTEM32_DLLS"/plugin.ocx ]
|
|
then
|
|
w_try $WINE iexplore -unregserver
|
|
fi
|
|
|
|
# Change the override to the native so we are sure we use and register them
|
|
w_override_dlls native,builtin iexplore.exe itircl itss jscript mlang mshtml msimtf shdoclc shdocvw shlwapi urlmon
|
|
|
|
# Remove the fake dlls, if any
|
|
mv "$W_PROGRAMS_UNIX"/"Internet Explorer"/iexplore.exe "$W_PROGRAMS_UNIX"/"Internet Explorer"/iexplore.exe.bak
|
|
for dll in itircl itss jscript mlang mshtml msimtf shdoclc shdocvw shlwapi urlmon
|
|
do
|
|
test -f "$W_SYSTEM32_DLLS"/$dll.dll &&
|
|
mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak
|
|
done
|
|
|
|
# The installer doesn't want to install iexplore.exe in XP mode.
|
|
w_set_winver win2k
|
|
|
|
# Workaround http://bugs.winehq.org/show_bug.cgi?id=21009
|
|
# See also http://code.google.com/p/winezeug/issues/detail?id=78
|
|
rm -f "$W_SYSTEM32_DLLS"/browseui.dll "$W_SYSTEM32_DLLS"/inseng.dll
|
|
|
|
# Work around http://bugs.winehq.org/show_bug.cgi?id=25432
|
|
w_try_cabextract -F inseng.dll "$W_TMP/IE 6.0 Full/ACTSETUP.CAB"
|
|
mv inseng.dll "$W_SYSTEM32_DLLS"
|
|
w_override_dlls native inseng.dll
|
|
|
|
cd "$W_TMP/IE 6.0 Full"
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
$WINE IE6SETUP.EXE /q:a /r:n /c:"ie6wzd /S:""#e"" /q:a /r:n"
|
|
else
|
|
$WINE IE6SETUP.EXE
|
|
fi
|
|
|
|
# IE6 exits with 194 to signal a reboot
|
|
status=$?
|
|
case $status in
|
|
0|194) ;;
|
|
*) w_die ie6 installation failed
|
|
esac
|
|
|
|
# Work around DLL registration bug until ierunonce/RunOnce/wineboot is fixed
|
|
# FIXME: whittle down this list
|
|
cd "$W_SYSTEM32_DLLS"
|
|
for i in actxprxy.dll browseui.dll browsewm.dll cdfview.dll ddraw.dll \
|
|
dispex.dll dsound.dll iedkcs32.dll iepeers.dll iesetup.dll \
|
|
imgutil.dll inetcomm.dll inseng.dll isetup.dll jscript.dll laprxy.dll \
|
|
mlang.dll mshtml.dll mshtmled.dll msi.dll msident.dll \
|
|
msoeacct.dll msrating.dll mstime.dll msxml3.dll occache.dll \
|
|
ole32.dll oleaut32.dll olepro32.dll pngfilt.dll quartz.dll \
|
|
rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \
|
|
shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \
|
|
wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \
|
|
plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx
|
|
do
|
|
$WINE regsvr32 /i $i > /dev/null 2>&1
|
|
done
|
|
|
|
# Set windows version back to user's default. Leave at win2k for better rendering (is there a bug for that?)
|
|
w_unset_winver
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_ie7()
|
|
{
|
|
# Unregister Wine IE
|
|
if [ ! -f "$W_SYSTEM32_DLLS"/plugin.ocx ]
|
|
then
|
|
w_try $WINE iexplore -unregserver
|
|
fi
|
|
|
|
# Change the override to the native so we are sure we use and register them
|
|
w_override_dlls native,builtin iexplore.exe itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon xmllite
|
|
|
|
# Bundled updspapi cannot work on wine
|
|
w_override_dlls builtin updspapi
|
|
|
|
# Remove the fake dlls from the existing WINEPREFIX
|
|
for dll in itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon
|
|
do
|
|
test -f "$W_SYSTEM32_DLLS"/$dll.dll &&
|
|
mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak
|
|
done
|
|
|
|
# See http://bugs.winehq.org/show_bug.cgi?id=16013
|
|
# Find instructions to create this file in dlls/wintrust/tests/crypt.c
|
|
w_download ie7 http://winezeug.googlecode.com/svn/trunk/winetricks_files/winetest.cat ac8f50dd54d011f3bb1dd79240dae9378748449f
|
|
|
|
# Put a dummy catalog file in place
|
|
mkdir -p "$W_SYSTEM32_DLLS"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}
|
|
w_try cp -f "$W_CACHE"/ie7/winetest.cat "$W_SYSTEM32_DLLS"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}/oem0.cat
|
|
|
|
# Install
|
|
w_download ie7 http://download.microsoft.com/download/3/8/8/38889DC1-848C-4BF2-8335-86C573AD86D9/IE7-WindowsXP-x86-enu.exe d39b89c360fbaa9706b5181ae4718100687a5326
|
|
if test "$W_UNATTENDED_SLASH_Q" = ""
|
|
then
|
|
quiet=""
|
|
else
|
|
quiet="/quiet"
|
|
fi
|
|
cd "$W_CACHE"/ie7
|
|
|
|
# KLUDGE: if / is writable, having a z: mapping to it causes ie7 to put temporary directories on Z:\
|
|
# so hide it temporarily. This is not very robust!
|
|
rm -f "$WINEPREFIX/dosdevices/z:.bak_wt"
|
|
mv "$WINEPREFIX/dosdevices/z:" "$WINEPREFIX/dosdevices/z:.bak_wt"
|
|
|
|
# FIXME: can't check status, as it always reports failure on wine?
|
|
if w_workaround_wine_bug 21947
|
|
then
|
|
WINEDEBUG=warn+heap $WINE IE7-WindowsXP-x86-enu.exe $quiet
|
|
else
|
|
$WINE IE7-WindowsXP-x86-enu.exe $quiet
|
|
fi
|
|
|
|
# END KLUDGE: restore z:, assuming user didn't kill us
|
|
mv "$WINEPREFIX/dosdevices/z:.bak_wt" "$WINEPREFIX/dosdevices/z:"
|
|
|
|
# Work around DLL registration bug until ierunonce/RunOnce/wineboot is fixed
|
|
# FIXME: whittle down this list
|
|
cd "$W_SYSTEM32_DLLS"
|
|
for i in actxprxy.dll browseui.dll browsewm.dll cdfview.dll ddraw.dll \
|
|
dispex.dll dsound.dll iedkcs32.dll iepeers.dll iesetup.dll \
|
|
imgutil.dll inetcomm.dll inseng.dll isetup.dll jscript.dll laprxy.dll \
|
|
mlang.dll mshtml.dll mshtmled.dll msi.dll msident.dll \
|
|
msoeacct.dll msrating.dll mstime.dll msxml3.dll occache.dll \
|
|
ole32.dll oleaut32.dll olepro32.dll pngfilt.dll quartz.dll \
|
|
rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \
|
|
shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \
|
|
wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \
|
|
plugin.ocx proctexe.ocx tdc.ocx webcheck.dll wshom.ocx
|
|
do
|
|
$WINE regsvr32 /i $i > /dev/null 2>&1
|
|
done
|
|
|
|
# Seeing is believing
|
|
if [ "$W_UNATTENDED_SLASH_Q" = "" ]
|
|
then
|
|
w_warn "Starting ie7. To start it later, use the command $WINE '${W_PROGRAMS_WIN}\\\\Internet Explorer\\\\iexplore'"
|
|
$WINE "${W_PROGRAMS_WIN}\\Internet Explorer\\iexplore" http://www.microsoft.com/windows/internet-explorer/ie7/ > /dev/null 2>&1 &
|
|
else
|
|
w_warn "To start ie7, use the command $WINE '${W_PROGRAMS_WIN}\\\\Internet Explorer\\\\iexplore'"
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_ie8()
|
|
{
|
|
# Unregister Wine IE
|
|
if [ ! -f "$W_SYSTEM32_DLLS"/plugin.ocx ]
|
|
then
|
|
w_try $WINE iexplore -unregserver
|
|
fi
|
|
|
|
load_msls31
|
|
|
|
# Change the override to the native so we are sure we use and register them
|
|
w_override_dlls native,builtin iexplore.exe itircl itss jscript msctf mshtml shdoclc shdocvw shlwapi urlmon xmllite
|
|
|
|
# Bundled updspapi cannot work on wine
|
|
w_override_dlls builtin updspapi
|
|
|
|
# Remove the fake dlls from the existing WINEPREFIX
|
|
for dll in browseui.dll inseng.dll itircl itss jscript msctf mshtml shdoclc shdocvw shlwapi urlmon
|
|
do
|
|
test -f "$W_SYSTEM32_DLLS"/$dll.dll &&
|
|
mv "$W_SYSTEM32_DLLS"/$dll.dll "$W_SYSTEM32_DLLS"/$dll.dll.bak
|
|
done
|
|
|
|
# See http://bugs.winehq.org/show_bug.cgi?id=16013
|
|
# Find instructions to create this file in dlls/wintrust/tests/crypt.c
|
|
w_download ie8 http://winezeug.googlecode.com/svn/trunk/winetricks_files/winetest.cat ac8f50dd54d011f3bb1dd79240dae9378748449f
|
|
|
|
# Put a dummy catalog file in place
|
|
mkdir -p "$W_SYSTEM32_DLLS"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}
|
|
w_try cp -f "$W_CACHE"/ie8/winetest.cat "$W_SYSTEM32_DLLS"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}/oem0.cat
|
|
|
|
w_download ie8 http://download.microsoft.com/download/C/C/0/CC0BD555-33DD-411E-936B-73AC6F95AE11/IE8-WindowsXP-x86-ENU.exe e489483e5001f95da04e1ebf3c664173baef3e26
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
quiet="/quiet /forcerestart"
|
|
else
|
|
quiet=""
|
|
fi
|
|
cd "$W_CACHE"/ie8
|
|
|
|
# KLUDGE: if / is writable, having a z: mapping to it causes ie8 to put temporary directories on Z:\
|
|
# so hide it temporarily. This is not very robust!
|
|
rm -f "$WINEPREFIX/dosdevices/z:.bak_wt"
|
|
mv "$WINEPREFIX/dosdevices/z:" "$WINEPREFIX/dosdevices/z:.bak_wt"
|
|
|
|
# FIXME: There's an option for /updates-noupdates to disable checking for updates, but that
|
|
# forces the install to fail on Wine. Not sure if it's an IE8 or Wine bug...
|
|
# FIXME: can't check status, as it always reports failure on wine?
|
|
$WINE IE8-WindowsXP-x86-enu.exe $quiet
|
|
|
|
# END KLUDGE: restore z:, assuming user didn't kill us
|
|
mv "$WINEPREFIX/dosdevices/z:.bak_wt" "$WINEPREFIX/dosdevices/z:"
|
|
|
|
# Work around DLL registration bug until ierunonce/RunOnce/wineboot is fixed
|
|
# FIXME: whittle down this list
|
|
cd "$W_SYSTEM32_DLLS"
|
|
for i in actxprxy.dll browseui.dll browsewm.dll cdfview.dll ddraw.dll \
|
|
dispex.dll dsound.dll iedkcs32.dll iepeers.dll iesetup.dll \
|
|
imgutil.dll inetcomm.dll isetup.dll jscript.dll laprxy.dll \
|
|
mlang.dll msctf.dll mshtml.dll mshtmled.dll msi.dll msimtf.dll msident.dll \
|
|
msoeacct.dll msrating.dll mstime.dll msxml3.dll occache.dll \
|
|
ole32.dll oleaut32.dll olepro32.dll pngfilt.dll quartz.dll \
|
|
rpcrt4.dll rsabase.dll rsaenh.dll scrobj.dll scrrun.dll \
|
|
shdocvw.dll shell32.dll urlmon.dll vbscript.dll webcheck.dll \
|
|
wshcon.dll wshext.dll asctrls.ocx hhctrl.ocx mscomct2.ocx \
|
|
plugin.ocx proctexe.ocx tdc.ocx uxtheme.dll webcheck.dll wshom.ocx
|
|
do
|
|
$WINE regsvr32 /i $i > /dev/null 2>&1
|
|
done
|
|
|
|
# FIXME: According to http://www.wine-reviews.net/wine-reviews/microsoft/internet-explorer-8-on-linux-with-wine.html
|
|
# may also need native msctf, msimtf, and uxtheme. Is this why the UI doesn't work yet?
|
|
|
|
w_warn "To start ie8, use the command $WINE '${W_PROGRAMS_WIN}\\\\Internet Explorer\\\\iexplore'... but it doesn't work yet. See http://code.google.com/p/winezeug/issues/detail?id=159 for an ugly workaround."
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_jet40()
|
|
{
|
|
# http://support.microsoft.com/kb/239114
|
|
# See also http://bugs.winehq.org/show_bug.cgi?id=6085
|
|
w_download . http://download.microsoft.com/download/4/3/9/4393c9ac-e69e-458d-9f6d-2fe191c51469/jet40sp8_9xnt.exe 8cd25342030857969ede2d8fcc34f3f7bcc2d6d4
|
|
w_try $WINE "$W_CACHE"/jet40sp8_9xnt.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_kde()
|
|
{
|
|
w_download . http://www.winkde.org/pub/kde/ports/win32/installer/kdewin-installer-gui-0.9.7-0.exe 9fe2f13b76375e70e780ce6850d0de35b08b4ec3
|
|
mkdir -p "$W_PROGRAMS_UNIX/kde"
|
|
w_try cp "$W_CACHE"/kdewin-installer-gui-0.9.7-0.exe "$W_PROGRAMS_UNIX/kde"
|
|
cd "$W_PROGRAMS_UNIX/kde"
|
|
w_try $WINE "$W_PROGRAMS_WIN\\kde\\kdewin-installer-gui-0.9.7-0.exe"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_l3codecx()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F l3codecx.ax "$W_TMP/dxnt.cab"
|
|
|
|
w_try_regsvr l3codecx.ax
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_liberation()
|
|
{
|
|
# http://www.redhat.com/promo/fonts/
|
|
case `uname -s` in
|
|
SunOS|Solaris)
|
|
echo "If you get 'ERROR: Certificate verification error for fedorahosted.org: unable to get local issuer certificate':"
|
|
echo "Then you need to add Verisign root certificates to your local keystore."
|
|
echo "OpenSolaris users, see: http://www.linuxtopia.org/online_books/opensolaris_2008/SYSADV1/html/swmgrpatchtasks-14.html"
|
|
echo "Or edit winetricks' download function, and add '--no-check-certificate' to the command."
|
|
;;
|
|
esac
|
|
|
|
w_download . https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-1.04.tar.gz 097882c92e3260742a3dc3bf033792120d8635a3
|
|
cd "$W_TMP"
|
|
gunzip -dc "$W_CACHE"/liberation-fonts-1.04.tar.gz | tar -xf -
|
|
mv liberation-fonts-1.04/*.ttf "$W_FONTSDIR_UNIX"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_lucida()
|
|
{
|
|
w_download . ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/NT40TSE/hotfixes-postSP3/Euro-fix/eurofixi.exe 64c47ad92265f6f10b0fd909a703d4fd1b05b2d5
|
|
w_try_cabextract -d "$W_FONTSDIR_UNIX" -L -F 'lucon.ttf' "$W_CACHE"/eurofixi.exe
|
|
w_register_font lucon.ttf "Lucida Console"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
set_native_mdac() {
|
|
# Set those overrides globally so user programs get MDAC's odbc
|
|
# instead of wine's unixodbc
|
|
w_override_dlls native,builtin odbc32 odbccp32 oledb32
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mdac25()
|
|
{
|
|
w_download mdac25 http://download.microsoft.com/download/e/e/4/ee4fe9ee-6fa1-4ab6-ab8c-fe1769f4edcf/mdac_typ.exe 09e974a5dbebaaa08c7985a4a1126886dc05fd87
|
|
set_native_mdac
|
|
w_set_winver nt40
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
w_try $WINE "$W_CACHE"/mdac25/mdac_typ.exe /q /C:"setup /QNT"
|
|
else
|
|
w_try $WINE "$W_CACHE"/mdac25/mdac_typ.exe
|
|
fi
|
|
w_unset_winver
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mdac27()
|
|
{
|
|
w_download mdac27 http://download.microsoft.com/download/3/b/f/3bf74b01-16ba-472d-9a8c-42b2b4fa0d76/mdac_typ.exe f68594d1f578c3b47bf0639c46c11c5da161feee
|
|
set_native_mdac
|
|
w_set_winver win2k
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
w_try $WINE "$W_CACHE"/mdac27/mdac_typ.exe /q /C:"setup /QNT"
|
|
else
|
|
w_try $WINE "$W_CACHE"/mdac27/mdac_typ.exe
|
|
fi
|
|
w_unset_winver
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mdac28()
|
|
{
|
|
w_download mdac28 http://download.microsoft.com/download/c/d/f/cdfd58f1-3973-4c51-8851-49ae3777586f/MDAC_TYP.EXE 91bd59f0b02b67f3845105b15a0f3502b9a2216a
|
|
set_native_mdac
|
|
w_set_winver win98
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
w_try $WINE "$W_CACHE"/mdac28/mdac_typ.exe /q /C:"setup /QNT"
|
|
else
|
|
w_try $WINE "$W_CACHE"/mdac28/mdac_typ.exe
|
|
fi
|
|
w_unset_winver
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mfc40()
|
|
{
|
|
# See http://support.microsoft.com/kb/122244
|
|
w_download . http://download.microsoft.com/download/ole/ole2v/3.5/w351/en-us/ole2v.exe c6cac71f32405ccb09c6f375e0738e6e13f073e4
|
|
w_try_unzip -d "$W_TMP" "$W_CACHE"/ole2v.exe
|
|
w_try cp -f "$W_TMP"/MFC40.DLL "$W_SYSTEM32_DLLS"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mingw_min()
|
|
{
|
|
# If this is just a dependency check, don't re-install
|
|
if test $W_PACKAGE != mingw_min && test $W_PACKAGE != mingw && test $W_PACKAGE != mingw-min && test -f "$W_DRIVE_C"/MinGW/bin/gcc.exe
|
|
then
|
|
echo "prerequisite mingw_min already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
# See http://mingw.org/wiki/Getting_Started
|
|
w_download . http://sourceforge.net/projects/mingw/files/binutils-2.19.1-mingw32-bin.tar.gz 1ab72f3af3fe96d08c3c9bff60c47913704d5774
|
|
w_download . http://sourceforge.net/projects/mingw/files/gcc-core-4.4.0-mingw32-bin.tar.gz b88b8f3644ca0cdf2c41cd03f820bf7823a8eabb
|
|
w_download . http://sourceforge.net/projects/mingw/files/gcc-core-4.4.0-mingw32-dll.tar.gz 0372ecf4caf75d0d9fe4a7739ca234f1a3de831b
|
|
w_download . http://sourceforge.net/projects/mingw/files/gmp-4.2.4-mingw32-dll.tar.gz a14dd928382f093f67cb3cd57c140625b1b265bb
|
|
w_download . http://sourceforge.net/projects/mingw/files/libiconv-1.13.1-1-mingw32-dll-2.tar.lzma 5b60ce4d9ec9cf91aee437915a2469b915e1235f
|
|
w_download . http://sourceforge.net/projects/mingw/files/mingwrt-3.16-mingw32-dev.tar.gz 770ff5001989d8a9a1ec4f3621d8f264a24e178f
|
|
w_download . http://sourceforge.net/projects/mingw/files/mingwrt-3.16-mingw32-dll.tar.gz b8032e97c79e16a3c540043f0f39821df1531ae9
|
|
w_download . http://sourceforge.net/projects/mingw/files/mpfr-2.4.1-mingw32-dll.tar.gz 43b7ecb2c0c785c44321ff6c4376f51375713a7b
|
|
w_download . http://sourceforge.net/projects/mingw/files/pthreads-w32-2.8.0-mingw32-dll.tar.gz f922f8c0c42921fd4482a3d2e6f779d6384040c1
|
|
w_download . http://sourceforge.net/projects/mingw/files/w32api-3.13-mingw32-dev.tar.gz 5eb7d8ec0fe032a92bea3a2c8282a78df2f1793c
|
|
|
|
mkdir "$W_DRIVE_C"/MinGW
|
|
cd "$W_DRIVE_C"/MinGW
|
|
gzip -d -c "$W_CACHE"/binutils-2.19.1-mingw32-bin.tar.gz | tar x
|
|
gzip -d -c "$W_CACHE"/mingwrt-3.16-mingw32-dev.tar.gz | tar x
|
|
gzip -d -c "$W_CACHE"/mingwrt-3.16-mingw32-dll.tar.gz | tar x
|
|
gzip -d -c "$W_CACHE"/w32api-3.13-mingw32-dev.tar.gz | tar x
|
|
gzip -d -c "$W_CACHE"/gmp-4.2.4-mingw32-dll.tar.gz | tar x
|
|
lzma -d -c "$W_CACHE"/libiconv-1.13.1-1-mingw32-dll-2.tar.lzma | tar x
|
|
gzip -d -c "$W_CACHE"/mpfr-2.4.1-mingw32-dll.tar.gz | tar x
|
|
gzip -d -c "$W_CACHE"/pthreads-w32-2.8.0-mingw32-dll.tar.gz | tar x
|
|
gzip -d -c "$W_CACHE"/gcc-core-4.4.0-mingw32-bin.tar.gz | tar x
|
|
gzip -d -c "$W_CACHE"/gcc-core-4.4.0-mingw32-dll.tar.gz | tar x
|
|
|
|
append_path 'C:\\MinGW\\bin'
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mingw_gdb()
|
|
{
|
|
# See http://mingw.org/wiki/Getting_Started
|
|
load_mingw_min
|
|
|
|
w_download . $SOURCEFORGE/mingw/GNU%20Source-Level%20Debugger/gdb-7.0-2-mingw32-bin.tar.gz a560cb0e3980d0ed853994c84038260212f58925
|
|
|
|
cd "$W_DRIVE_C"/MinGW
|
|
gzip -d -c "$W_CACHE"/gdb-7.0-2-mingw32-bin.tar.gz | tar x
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mono26()
|
|
{
|
|
# Load Mono, have it handle all .net requests
|
|
w_download . http://ftp.novell.com/pub/mono/archive/2.6.7/windows-installer/2/mono-2.6.7-gtksharp-2.12.10-win32-2.exe c31c06063aa82006dff2f8df22dcc6ba046afbc2
|
|
w_try $WINE "$W_CACHE"/mono-2.6.7-gtksharp-2.12.10-win32-2.exe $W_UNATTENDED_SLASH_SILENT
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mono28()
|
|
{
|
|
# Load Mono, have it handle all .net requests
|
|
w_download . http://ftp.novell.com/pub/mono/archive/2.8.1/windows-installer/3/mono-2.8.1-gtksharp-2.12.10-win32-3.exe e491cbcadf486bdb3993efe6dc98e90c4e19425e
|
|
w_try $WINE "$W_CACHE"/mono-2.8.1-gtksharp-2.12.10-win32-3.exe $W_UNATTENDED_SLASH_SILENT
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mozillabuild()
|
|
{
|
|
w_download . http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.4.exe
|
|
w_try $WINE "$W_CACHE"/MozillaBuildSetup-1.4.exe $W_UNATTENDED_SLASH_S
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mpc()
|
|
{
|
|
w_download . $SOURCEFORGE/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC%20v1.3.1249.0_32%20bits/MPC-Homecinema.1.3.1249.0.%28x86%29.zip 6c46846b5298f35ccc81925aa5304546b9a7e513
|
|
mkdir -p "$W_PROGRAMS_UNIX/Media Player Classic"
|
|
cd "$W_PROGRAMS_UNIX/Media Player Classic"
|
|
w_try_unzip "$W_CACHE/MPC-Homecinema.1.3.1249.0.%28x86%29.zip"
|
|
|
|
w_warn "MPC now available as $W_PROGRAMS_WIN\Media Player Classic\mpc-hc.exe"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_msasn1()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyID=1001AAF1-749F-49F4-8010-297BD6CA33A0&displaylang=en
|
|
# FIXME: This is a huge w_download for a single dll.
|
|
w_download msasn1 http://download.microsoft.com/download/E/6/A/E6A04295-D2A8-40D0-A0C5-241BFECD095E/W2KSP4_EN.EXE fadea6d94a014b039839fecc6e6a11c20afa4fa8
|
|
cd "$W_TMP"
|
|
w_try_cabextract -F i386/msasn1.dl_ "$W_CACHE"/msasn1/W2KSP4_EN.EXE
|
|
w_try_cabextract i386/msasn1.dl_
|
|
w_try cp msasn1.dll "$W_SYSTEM32_DLLS"
|
|
w_try rm -rf i386
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_msi2()
|
|
{
|
|
# Install native msi per http://wiki.winehq.org/NativeMsi
|
|
# http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=CEBBACD8-C094-4255-B702-DE3BB768148F
|
|
w_download . http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe e739c40d747e7c27aacdb07b50925b1635ee7366
|
|
|
|
# Pick win98 so we can install native msi
|
|
w_set_winver win98
|
|
|
|
# Avoid "err:setupapi:SetupDefaultQueueCallbackA copy error 5 ..."
|
|
rm -f "$W_SYSTEM32_DLLS"/msi.dll
|
|
rm -f "$W_SYSTEM32_DLLS"/msiexec.exe
|
|
|
|
WINEDLLOVERRIDES="msi,msiexec.exe=n" w_try $WINE "$W_CACHE"/InstMSIA.exe $W_UNATTENDED_SLASH_Q
|
|
|
|
w_override_dlls native,builtin msi msiexec.exe
|
|
|
|
# and undo version win98
|
|
w_unset_winver
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mshflxgd()
|
|
{
|
|
# http://msdn.microsoft.com/en-us/library/aa240864(VS.60).aspx
|
|
# orig: 5f9c7a81022949bfe39b50f2bbd799c448bb7377
|
|
# Jan 2009: 7ad74e589d5eefcee67fa14e65417281d237a6b6
|
|
# May 2009: bd8aa796e16e5f213414af78931e0379d9cbe292
|
|
w_download . http://activex.microsoft.com/controls/vb6/MSHFLXGD.CAB bd8aa796e16e5f213414af78931e0379d9cbe292
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/MSHFLXGD.CAB
|
|
w_try cp -f "$W_TMP"/[Mm][Ss][Hh][Ff][Ll][Xx][Gg][Dd].[Oo][Cc][Xx] "$W_SYSTEM32_DLLS"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_msls31()
|
|
{
|
|
# Install native Microsoft Line Services (needed by e-Sword, possibly only when using native riched20)
|
|
w_download msls31 http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe e739c40d747e7c27aacdb07b50925b1635ee7366
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/msls31/InstMsiA.exe
|
|
w_try cp -f "$W_TMP"/msls31.dll "$W_SYSTEM32_DLLS"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_msmask()
|
|
{
|
|
# http://msdn.microsoft.com/en-us/library/11405hcf(VS.71).aspx
|
|
# http://bugs.winehq.org/show_bug.cgi?id=2934
|
|
# old: 3c6b26f68053364ea2e09414b615dbebafb9d5c3
|
|
# May 2009: 30e55679e4a13fe4d9620404476f215f93239292
|
|
w_download . http://activex.microsoft.com/controls/vb6/MSMASK32.CAB 30e55679e4a13fe4d9620404476f215f93239292
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/MSMASK32.CAB
|
|
w_try cp -f "$W_TMP"/[Mm][Ss][Mm][Aa][Ss][Kk]32.[Oo][Cc][Xx] "$W_SYSTEM32_DLLS"/msmask32.ocx
|
|
w_try_regsvr msmask32.ocx
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_mspaint()
|
|
{
|
|
# http://helpforlinux.blogspot.com/2008/12/run-ms-paint-in-linux.html
|
|
w_download . http://download.microsoft.com/download/winntwks40/paint/1/nt4/en-us/paintnt.exe a22c4e367ef9d2cd23f0a8ae8d9ebff5bc1e8a0b
|
|
w_try_unzip "$W_CACHE"/paintnt.exe -d "$W_WINDIR_UNIX"
|
|
w_warn "Paint is now installed to $W_WINDIR_UNIX/MSPAINT.EXE"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_msscript()
|
|
{
|
|
# http://msdn.microsoft.com/scripting/scriptcontrol/x86/sct10en.exe
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=d7e31492-2595-49e6-8c02-1426fec693ac
|
|
w_download . http://download.microsoft.com/download/d/2/a/d2a7430c-6d5b-48e9-96c4-3c751be7bffe/sct10en.exe fd9f2f23357ab11ae70682d6864f7e9f188adf2a
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/sct10en.exe
|
|
w_try cp -f "$W_TMP"/msscript.ocx "$W_SYSTEM32_DLLS"
|
|
w_try_regsvr msscript.ocx
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_msxml3()
|
|
{
|
|
# Service Pack 5
|
|
#w_download http://download.microsoft.com/download/a/5/e/a5e03798-2454-4d4b-89a3-4a47579891d8/msxml3.msi
|
|
# Service Pack 7
|
|
w_download msxml3 http://download.microsoft.com/download/8/8/8/888f34b7-4f54-4f06-8dac-fa29b19f33dd/msxml3.msi d4c2178dfb807e1a0267fce0fd06b8d51106d913
|
|
# http://bugs.winehq.org/show_bug.cgi?id=7849 fixed since 0.9.37
|
|
rm "$W_SYSTEM32_DLLS"/msxml3.dll
|
|
w_override_dlls native msxml3
|
|
cd "$W_CACHE"/msxml3
|
|
w_try $WINE msiexec /i msxml3.msi $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_msxml4()
|
|
{
|
|
# If this is just a dependency check, don't re-install
|
|
if test $W_PACKAGE != msxml4 && test -f "$W_SYSTEM32_DLLS"/msxml4.dll
|
|
then
|
|
echo "prerequisite msxml4 already installed, skipping"
|
|
return
|
|
fi
|
|
# MS06-071: http://www.microsoft.com/downloads/details.aspx?familyid=24B7D141-6CDF-4FC4-A91B-6F18FE6921D4
|
|
# w_download msxml4 http://download.microsoft.com/download/e/2/e/e2e92e52-210b-4774-8cd9-3a7a0130141d/msxml4-KB927978-enu.exe d364f9fe80c3965e79f6f64609fc253dfeb69c25
|
|
# MS07-042: http://www.microsoft.com/downloads/details.aspx?FamilyId=021E12F5-CB46-43DF-A2B8-185639BA2807
|
|
# w_download msxml4 http://download.microsoft.com/download/9/4/2/9422e6b6-08ee-49cb-9f05-6c6ee755389e/msxml4-KB936181-enu.exe 73d75d7b41f8a3d49f272e74d4f73bb5e82f1acf
|
|
# SP3 (2009): http://www.microsoft.com/downloads/details.aspx?familyid=7F6C0CB4-7A5E-4790-A7CF-9E139E6819C0
|
|
w_download msxml4 http://download.microsoft.com/download/A/2/D/A2D8587D-0027-4217-9DAD-38AFDB0A177E/msxml.msi aa70c5c1a7a069af824947bcda1d9893a895318b
|
|
w_override_dlls native,builtin msxml4
|
|
cd "$W_CACHE"/msxml4
|
|
w_try $WINE msiexec /i msxml.msi $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_msxml6()
|
|
{
|
|
# If this is just a dependency check, don't re-install
|
|
# FIXME: this check broken for win64?
|
|
if test $W_PACKAGE != msxml6 && test -f "$W_SYSTEM32_DLLS"/msxml6.dll
|
|
then
|
|
echo "prerequisite msxml6 already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
# Service Pack 1
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=D21C292C-368B-4CE1-9DAB-3E9827B70604
|
|
case $W_ARCH in
|
|
win32)
|
|
w_download msxml6 http://download.microsoft.com/download/e/a/f/eafb8ee7-667d-4e30-bb39-4694b5b3006f/msxml6_x86.msi 5125220e985b33c946bbf9f60e2b222c7570bfa2
|
|
cd "$W_CACHE"/msxml6
|
|
w_override_dlls native,builtin msxml6
|
|
rm -f "$W_SYSTEM32_DLLS/msxml6.dll"
|
|
w_try $WINE msiexec /i msxml6_x86.msi $W_UNATTENDED_SLASH_Q
|
|
;;
|
|
win64)
|
|
# FIXME: Currently fails, wine bug?
|
|
w_download msxml6 http://download.microsoft.com/download/2/e/0/2e01308a-e17f-4bf9-bf48-161356cf9c81/msxml6_x64.msi 1eb84eeae7729ea5db7fe79779f4e216114261ba
|
|
cd "$W_CACHE"/msxml6
|
|
w_override_dlls native,builtin msxml6
|
|
w_try $WINE msiexec /i "$W_CACHE"/msxml6_x64.msi $W_UNATTENDED_SLASH_Q
|
|
;;
|
|
esac
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_nvidiasdk95()
|
|
{
|
|
w_download . http://developer.download.nvidia.com/SDK/9.5/NVIDIA_SDK_9.52.0324.0405.exe
|
|
w_try $WINE "$W_CACHE"/NVIDIA_SDK_9.52.0324.0405.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_ogg()
|
|
{
|
|
# flac, ogg, speex, vorbis, ogm source, ogg source
|
|
# see following URLs for more info
|
|
# http://xiph.org/dshow/
|
|
# http://www.diracvideo.org/
|
|
# http://cross-lfs.org/~mlankhorst/direct-schro.txt
|
|
# http://www.diracvideo.org/git?p=direct-schro.git;a=summary
|
|
|
|
w_download . http://downloads.xiph.org/releases/oggdsf/opencodecs_0.84.17338.exe 6151ab79e6ae246208cdf707e080f01c93d95deb
|
|
w_try $WINE "$W_CACHE"/opencodecs_0.84.17338.exe $W_UNATTENDED_SLASH_S
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_ole2()
|
|
{
|
|
# http://support.microsoft.com/kb/123087/EN-US/
|
|
w_download . http://download.microsoft.com/download/win31/update/2.03/win/en-us/ww1116.exe b803991c40f387464b61f606536b7c98a88245d2
|
|
w_try_unzip -d "$W_TMP" "$W_CACHE"/ww1116.exe
|
|
w_set_winver win31
|
|
cd "$W_TMP"
|
|
w_try $WINE setup.exe
|
|
w_unset_winver
|
|
|
|
w_override_dlls native,builtin COMPOBJ OLE2CONV OLE2DISP OLE2
|
|
w_override_dlls native,builtin OLE2NLS OLE2PROX STORAGE TYPELIB
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_opensymbol()
|
|
{
|
|
# The OpenSymbol fonts are a replacement for the Windows Wingdings font from OpenOffice.org.
|
|
# Need to w_download from Debian since I can't find a standalone download from OpenOffice
|
|
# Note: The source download package on debian is for _all_ of OpenOffice, which is 266 MB.
|
|
w_download opensymbol http://ftp.us.debian.org/debian/pool/main/o/openoffice.org/ttf-opensymbol_3.2.1-11_all.deb 51f79c66f7361fae49053d8456ff1e0973748fb8
|
|
w_try cd "$W_TMP"
|
|
w_try ar x "$W_CACHE/opensymbol/ttf-opensymbol_3.2.1-11_all.deb" data.tar.bz2
|
|
w_try tar jvxf data.tar.bz2 ./usr/share/fonts/truetype/openoffice/opens___.ttf
|
|
w_try mv "$W_TMP/usr/share/fonts/truetype/openoffice/opens___.ttf" "$W_FONTSDIR_UNIX"
|
|
w_register_font opens___.ttf "OpenSymbol"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_openwatcom()
|
|
{
|
|
# http://www.openwatcom.org
|
|
w_download . "http://ftp.openwatcom.org/ftp/open-watcom-c-win32-1.9.exe" 236ac33ebd463006be4ecd83d7ebea1c026eb55a
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
# Options documented at http://bugzilla.openwatcom.org/show_bug.cgi?id=898
|
|
# But they don't seem to work on wine, so jam them into setup.inf
|
|
# Pick smallest installation that supports 16 bit C and C++
|
|
cd "$W_TMP"
|
|
cp "$W_CACHE"/open-watcom-c-win32-1.9.exe .
|
|
w_try_unzip open-watcom-c-win32-1.9.exe setup.inf
|
|
sed -i 's/tools16=.*/tools16=true/' setup.inf
|
|
w_try zip -f open-watcom-c-win32-1.9.exe
|
|
w_try $WINE open-watcom-c-win32-1.9.exe -s
|
|
else
|
|
w_try $WINE "$W_CACHE"/open-watcom-c-win32-1.9.exe
|
|
fi
|
|
if test ! -f "$W_DRIVE_C"/WATCOM/binnt/wcc.exe
|
|
then
|
|
w_warn "c:/watcom/binnt/wcc.exe not found; you probably didn't select 16 bit tools, and won't be able to buld win16test"
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_pdh()
|
|
{
|
|
# http://support.microsoft.com/kb/284996
|
|
w_download . http://download.microsoft.com/download/platformsdk/Redist/5.0.2195.2668/NT4/EN-US/pdhinst.exe f42448660def8cd7f42b34aa7bc7264745f4425e
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/pdhinst.exe
|
|
w_try_unzip -d "$W_TMP" "$W_TMP"/pdh.exe
|
|
w_try cp -f "$W_TMP"/x86/Pdh.Dll "$W_SYSTEM32_DLLS"/pdh.dll
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_physx()
|
|
{
|
|
# http://www.nvidia.com/object/physx_9.09.0814.html
|
|
# w_download physx http://us.download.nvidia.com/Windows/9.09.0814/PhysX_9.09.0814_SystemSoftware.exe e19f7c3385a4a68e7acb85301bb4d2d0d1eaa1e2
|
|
# http://www.nvidia.com/object/physx_9.10.0129.html
|
|
w_download physx http://us.download.nvidia.com/Windows/9.10.0129/PhysX_9.10.0129_SystemSoftware.exe 33a8b54d842c7246946de15b1a48209c386c9c4b
|
|
cd "$W_CACHE"/physx
|
|
w_try $WINE PhysX_9.10.0129_SystemSoftware.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_psdk2003()
|
|
{
|
|
load_vcrun6
|
|
|
|
# Note: aborts on 64 bit windows with dialog saying "don't run on WoW"
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=0baf2b35-c656-4969-ace8-e4c0c0716adb
|
|
w_download psdk2003 http://download.microsoft.com/download/f/a/d/fad9efde-8627-4e7a-8812-c351ba099151/PSDK-x86.exe 5c7dc2e1eb902b376d7797cc383fefdfc64ff9c9
|
|
echo "This can take up to an hour."
|
|
cd "$W_CACHE"/psdk2003
|
|
w_try $WINE PSDK-x86.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_psdkvista()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=0baf2b35-c656-4969-ace8-e4c0c0716adb
|
|
w_warn "Vista SDK doesn't work yet as of wine-1.1.28"
|
|
load_dotnet20
|
|
w_download psdkvista download.microsoft.com/download/c/a/1/ca145d10-e254-475c-85f9-1439f4cd2a9e/Setup.exe 756c21a7fc9b831f7200f3f44ae55cc7689e8063
|
|
#chmod +x "$W_CACHE"/psdkvista/Setup.exe
|
|
cd "$W_CACHE"/psdkvista
|
|
w_try $WINE Setup.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_psdkwin7()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en
|
|
load_vcrun6
|
|
load_vcrun2008
|
|
load_dotnet20
|
|
load_gdiplus # work around http://bugs.winehq.org/show_bug.cgi?id=21509
|
|
|
|
# don't have a working unattended recipe. Maybe we'll have to
|
|
# do an autohotkey script until msft gets its act together:
|
|
# http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/c053b616-7d5b-405d-9841-ec465a8e21d5
|
|
w_download psdkwin7 http://download.microsoft.com/download/7/A/B/7ABD2203-C472-4036-8BA0-E505528CCCB7/winsdk_web.exe a01dcc67a38f461e80ea649edf1353f306582507
|
|
cd "$W_CACHE"/psdkwin7
|
|
w_warn "When given a choice, select only C++ compilers and headers, the other options don't work yet. See http://bugs.winehq.org/show_bug.cgi?id=21596"
|
|
w_try $WINE winsdk_web.exe
|
|
|
|
# FIXME: don't do this if running on real Windows?
|
|
# Work around bug http://bugs.winehq.org/show_bug.cgi?id=21362
|
|
# Assume user installed in default location
|
|
cat > "$W_TMP"/set-psdk7.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs]
|
|
|
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows]
|
|
"CurrentVersion"="v7.0"
|
|
"CurrentInstallFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.0\\"
|
|
|
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0]
|
|
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.0\\"
|
|
"ProductVersion"="7.0.7600.16385.40715"
|
|
"ProductName"="Microsoft Windows SDK for Windows 7 (7.0.7600.16385.40715)"
|
|
_EOF_
|
|
w_try_regedit "$W_TMP_WIN"\\set-psdk7.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_python26()
|
|
{
|
|
|
|
# If this is just a dependency check, don't re-install
|
|
if test $W_PACKAGE != python26 && test -f "$WINEPREFIX"/drive_c/Python26/python.exe
|
|
then
|
|
echo "prerequisite python26 already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
w_download . http://www.python.org/ftp/python/2.6.2/python-2.6.2.msi 2d1503b0e8b7e4c72a276d4d9027cf4856b208b8
|
|
w_download . $SOURCEFORGE/project/pywin32/pywin32/Build%20214/pywin32-214.win32-py2.6.exe eca58f29b810d8e3e7951277ebb3e35ac35794a3
|
|
cd "$W_CACHE"
|
|
w_try $WINE msiexec /i python-2.6.2.msi ALLUSERS=1 $W_UNATTENDED_SLASH_Q
|
|
# FIXME: unzip this instead of running it if quiet install?
|
|
w_try $WINE pywin32-214.win32-py2.6.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_python_comtypes()
|
|
{
|
|
|
|
load_python26
|
|
|
|
w_download . $SOURCEFORGE/project/comtypes/comtypes/0.6.1/comtypes-0.6.1-1.zip 814318cdae0ab2471a9cd500847bf12f4df9a57c
|
|
cd "$W_CACHE"
|
|
w_try_unzip comtypes-0.6.1-1.zip
|
|
cd comtypes-0.6.1
|
|
w_try $WINE "C:\Python26\python.exe" setup.py install
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_quartz()
|
|
{
|
|
helper_directx_dl
|
|
|
|
w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F 'quartz.dll' "$W_TMP/dxnt.cab"
|
|
|
|
w_try_regsvr quartz.dll
|
|
|
|
w_override_dlls native quartz
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_quicktime72()
|
|
{
|
|
echo "Quicktime needs gdiplus..."
|
|
load_gdiplus
|
|
echo "Quicktime needs vcrun2005..."
|
|
load_vcrun2005
|
|
|
|
# http://www.apple.com/support/downloads/quicktime72forwindows.html
|
|
w_download quicktime72 'http://wsidecar.apple.com/cgi-bin/nph-reg3rdpty2.pl/product=14402&cat=59&platform=osx&method=sa/QuickTimeInstaller.exe' bb89981f10cf21de57b9453e53cf81b9194271a9
|
|
unset QUICKTIME_QUIET
|
|
if test "$W_UNATTENDED_SLASH_Q"x != x
|
|
then
|
|
QUICKTIME_QUIET="/qn" # ISSETUPDRIVEN=0
|
|
fi
|
|
# set vista mode to inhibit directdraw overlay use that blacks the screen
|
|
w_set_winver vista
|
|
w_try $WINE "$W_CACHE"/quicktime72/QuickTimeInstaller.exe ALLUSERS=1 DESKTOP_SHORTCUTS=0 QTTaskRunFlags=0 QTINFO.BISQTPRO=1 SCHEDULE_ASUW=0 REBOOT_REQUIRED=No $QUICKTIME_QUIET > /dev/null 2>&1
|
|
if test "$W_UNATTENDED_SLASH_Q"x = x
|
|
then
|
|
echo "You probably want to select Advanced / Safe Mode in the Quicktime control panel"
|
|
w_try $WINE control "$W_PROGRAMS_WIN\\QuickTime\\QTSystem\\QuickTime.cpl"
|
|
fi
|
|
|
|
w_unset_winver
|
|
# user might want to set vista mode himself, or run
|
|
# wine control ".wine/drive_c/Program Files/QuickTime/QTSystem/QuickTime.cpl"
|
|
# and pick Advanced / Safe Mode (gdi only).
|
|
# We could probably force that by overwriting QuickTime.qtp
|
|
# (probably in Program Files/QuickTime/QTSystem/QuickTime.qtp)
|
|
# but the format isn't known, so we'd have to override all other settings, too.
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_quicktime76()
|
|
{
|
|
echo "Quicktime needs gdiplus..."
|
|
load_gdiplus
|
|
echo "Quicktime needs vcrun2005..."
|
|
load_vcrun2005
|
|
|
|
# http://www.apple.com/quicktime/download/
|
|
w_download quicktime76 'http://appldnld.apple.com/QuickTime/061-8938.20100915.Qts3T/QuickTimeInstaller.exe' 38e33492ea1200abeda87256872e5a3dd47e584f
|
|
unset QUICKTIME_QUIET
|
|
if test "$W_UNATTENDED_SLASH_Q"x != x
|
|
then
|
|
QUICKTIME_QUIET="/qn" # ISSETUPDRIVEN=0
|
|
fi
|
|
# set vista mode to inhibit directdraw overlay use that blacks the screen
|
|
w_set_winver vista
|
|
w_try $WINE "$W_CACHE"/quicktime76/QuickTimeInstaller.exe ALLUSERS=1 DESKTOP_SHORTCUTS=0 QTTaskRunFlags=0 QTINFO.BISQTPRO=1 SCHEDULE_ASUW=0 REBOOT_REQUIRED=No $QUICKTIME_QUIET > /dev/null 2>&1
|
|
if test "$W_UNATTENDED_SLASH_Q"x = x
|
|
then
|
|
echo "You probably want to select Advanced / Safe Mode in the Quicktime control panel"
|
|
w_try $WINE control "$W_PROGRAMS_WIN\\QuickTime\\QTSystem\\QuickTime.cpl"
|
|
fi
|
|
|
|
w_unset_winver
|
|
# user might want to set vista mode himself, or run
|
|
# wine control ".wine/drive_c/Program Files/QuickTime/QTSystem/QuickTime.cpl"
|
|
# and pick Advanced / Safe Mode (gdi only).
|
|
# We could probably force that by overwriting QuickTime.qtp
|
|
# (probably in Program Files/QuickTime/QTSystem/QuickTime.qtp)
|
|
# but the format isn't known, so we'd have to override all other settings, too.
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
volnum() {
|
|
case "$OS" in
|
|
"Windows_NT")
|
|
return
|
|
;;
|
|
esac
|
|
|
|
# Recent Microsoft installers are often based on "windows package manager", see
|
|
# http://support.microsoft.com/kb/262841 and
|
|
# http://www.microsoft.com/technet/prodtechnol/windowsserver2003/deployment/winupdte.mspx
|
|
# These installers check the drive name, and if it doesn't start with 'harddisk',
|
|
# they complain "Unable to find a volume for file extraction", see
|
|
# http://bugs.winehq.org/show_bug.cgi?id=5351
|
|
# You may be able to work around this by using the installer's /x or /extract switch,
|
|
# but renaming drive_c to "harddiskvolume0" lets you just run the installer as normal.
|
|
|
|
if test ! -d "$WINEPREFIX"/harddiskvolume0/
|
|
then
|
|
ln -s drive_c "$WINEPREFIX"/harddiskvolume0
|
|
rm "$WINEPREFIX"/dosdevices/c:
|
|
ln -s ../harddiskvolume0 "$WINEPREFIX"/dosdevices/c:
|
|
echo "Renamed drive_c to harddiskvolume0"
|
|
else
|
|
echo "drive_c already named harddiskvolume0"
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_riched20()
|
|
{
|
|
# http://support.microsoft.com/?kbid=249973
|
|
w_download . http://download.microsoft.com/download/winntsp/Patch/RTF/NT4/EN-US/Q249973i.EXE f0b7663f15dbd31410435483ba832318c7a70470
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/Q249973i.EXE
|
|
w_try cp -f "$W_TMP"/riched??.dll "$W_SYSTEM32_DLLS"
|
|
w_override_dlls native,builtin riched20 riched32
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_riched30()
|
|
{
|
|
# http://www.novell.com/documentation/nm1/readmeen_web/readmeen_web.html#Akx3j64
|
|
# claims that Groupwise Messenger's View / Text Size command
|
|
# only works with riched30, and recommends getting it by installing
|
|
# msi 2, which just happens to come with riched30 version of riched20
|
|
# (though not with a corresponding riched32, which might be a problem)
|
|
# http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=CEBBACD8-C094-4255-B702-DE3BB768148F
|
|
w_download . http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe e739c40d747e7c27aacdb07b50925b1635ee7366
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/InstMsiA.exe
|
|
w_try cp -f "$W_TMP"/riched20.dll "$W_SYSTEM32_DLLS"
|
|
w_override_dlls native,builtin riched20
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_richtx32()
|
|
{
|
|
w_download . http://activex.microsoft.com/controls/vb6/richtx32.cab da404b566df3ad74fe687c39404a36c3e7cadc07
|
|
w_try_cabextract "$W_CACHE"/richtx32.cab -d "$W_SYSTEM32_DLLS" -F RichTx32.Ocx
|
|
w_try_regsvr RichTx32.ocx
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_secur32()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=c4e408d7-6716-4a12-ad3a-8029667f5c84
|
|
w_download secur32 http://download.microsoft.com/download/6/9/5/69501788-B62F-44D8-933F-B6FAA576CA87/Windows2000-KB959426-x86-ENU.EXE bf930a4d2982165a0793465bb255d494ba5b4cf7
|
|
w_try_cabextract "$W_CACHE"/secur32/Windows2000-KB959426-x86-ENU.EXE -d "$W_SYSTEM32_DLLS" -F secur32.dll
|
|
w_override_dlls native,builtin secur32
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_safari()
|
|
{
|
|
|
|
w_download . http://appldnld.apple.com.edgesuite.net/content.info.apple.com/Safari5/061-7138.20100607.Y7U87/SafariSetup.exe e56d5d79d9cfbb85ac46ac78aa497d7f3d8dbc3d
|
|
cd "$W_CACHE"
|
|
# Workaround http://bugs.winehq.org/show_bug.cgi?id=21146
|
|
w_try mkdir -p "$appdata_unix/Apple Computer/Preferences"
|
|
cat > "$appdata_unix/Apple Computer/Preferences/com.apple.Safari.plist" <<_EOF_
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>LastDisplayedWelcomePageVersionString</key>
|
|
<string>4.0</string>
|
|
</dict>
|
|
</plist>
|
|
_EOF_
|
|
|
|
if test "$W_UNATTENDED_SLASH_Q"
|
|
then
|
|
w_warn "Safari's silent install is broken under wine. See http://bugs.winehq.org/show_bug.cgi?id=23493. You should do a regular install if you want to use Safari."
|
|
w_try $WINE SafariSetup.exe /qn
|
|
else
|
|
w_try $WINE SafariSetup.exe
|
|
fi
|
|
}
|
|
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_shockwave()
|
|
{
|
|
# Not silent enough, use msi instead
|
|
#w_download . http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/Shockwave_Installer_Full.exe 840e34e9b067cf247bfa9092665b8966158f38e3
|
|
#w_try $WINE "$W_CACHE"/Shockwave_Installer_Full.exe $W_UNATTENDED_SLASH_S
|
|
# old sha1sum: 6a91a9da4b54c3fdc97130a15e1a173117e5f4ff
|
|
# 2009-07-31 sha1sum: 0bb506ef67a268e8d3fb6c7ce556320ee10b9da5
|
|
# 2009-12-13 sha1sum: d35649883bf13cb1a86f5650e1050d15533ac0f4
|
|
# 2010-01-23 sha1sum: 4a837d238c28c5f345d73f105711f20c6d059273
|
|
# 2010-05-15 sha1sum: bdce02afc82233801e84137e78c2c5fe574db253
|
|
# 2010-09-02 sha1sum: fed20eccc29fec2f64162b7265343514d43884bc
|
|
# 2010-11-03 sha1sum: 2ff28665543e80f3bd4ff1933ac05ec9314aaac6
|
|
|
|
w_download . http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/sw_lic_full_installer.msi 2ff28665543e80f3bd4ff1933ac05ec9314aaac6
|
|
w_try $WINE msiexec /i "$W_CACHE"/sw_lic_full_installer.msi $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_steam()
|
|
{
|
|
if ! test -f "$W_FONTSDIR_UNIX/Times.TTF"
|
|
then
|
|
w_warn "Installing corefonts to prvent a Steam crash; see wine bug 22751"
|
|
load_corefonts
|
|
fi
|
|
w_download steam http://storefront.steampowered.com/download/SteamInstall.msi a0ca8791b7b2e96665ee059e03eebbfb3d95be55
|
|
cd "$W_CACHE"/steam
|
|
w_try $WINE msiexec /i SteamInstall.msi $W_UNATTENDED_SLASH_Q
|
|
if w_workaround_wine_bug 22053
|
|
then
|
|
w_warn "Once Steam is running, disable player notifications and in-game chat in Settings, or games will crash on launch; see wine bug 22053"
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_tahoma()
|
|
{
|
|
# The tahoma and tahomabd fonts are needed by e.g. Steam
|
|
|
|
w_download tahoma http://download.microsoft.com/download/office97pro/fonts/1/w95/en-us/tahoma32.exe 888ce7b7ab5fd41f9802f3a65fd0622eb651a068
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/tahoma/tahoma32.exe
|
|
w_try cp -f "$W_TMP"/Tahoma.TTF "$W_FONTSDIR_UNIX"/tahoma.ttf
|
|
w_try cp -f "$W_TMP"/Tahomabd.TTF "$W_FONTSDIR_UNIX"/tahomabd.ttf
|
|
chmod +w "$W_FONTSDIR_UNIX"/tahoma*.ttf
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_takao()
|
|
{
|
|
# The Takao font provides Japanese glyphs. May also be needed with fakejapanese function above.
|
|
# See http://launchpad.net/takao-fonts for project page
|
|
w_download . http://launchpad.net/takao-fonts/003.02/003.02.01/+download/takao-fonts-ttf-003.02.01.zip 4f636d5c7c1bc16b96ea723adb16838cfb6df059
|
|
cp -f "$W_CACHE"/takao-fonts-ttf-003.02.01.zip "$W_TMP"
|
|
w_try_unzip -d "$W_TMP" "$W_TMP"/takao-fonts-ttf-003.02.01.zip
|
|
w_try cp -f "$W_TMP"/takao-fonts-ttf-003.02.01/*.ttf "$W_FONTSDIR_UNIX"
|
|
|
|
w_register_font TakaoGothic.ttf "TakaoGothic"
|
|
w_register_font TakaoPGothic.ttf "TakaoPGothic"
|
|
w_register_font TakaoMincho.ttf "TakaoMincho"
|
|
w_register_font TakaoPMincho.ttf "TakaoPMincho"
|
|
w_register_font TakaoExGothic.ttf "TakaoExGothic"
|
|
w_register_font TakaoExMincho.ttf "TakaoExMincho"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_unifont()
|
|
{
|
|
# The GNU Unifont provides glyphs for just about everything in common language. It is intended for multilingual usage.
|
|
# See http://unifoundry.com/unifont.html for project page
|
|
w_download . http://unifoundry.com/unifont-5.1.20080907.zip bb8a3960dc0a96aa305de28312ea8a0ab64123d2
|
|
cp -f "$W_CACHE"/unifont-5.1.20080907.zip "$W_TMP"
|
|
w_try_unzip -d "$W_TMP" "$W_TMP"/unifont-5.1.20080907.zip
|
|
w_try cp -f "$W_TMP"/unifont-5.1.20080907.ttf "$W_FONTSDIR_UNIX/unifont.ttf"
|
|
|
|
w_register_font unifont.ttf "Unifont"
|
|
|
|
cat > "$W_TMP"/unifont.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
|
|
"Arial Unicode MS"="Unifont"
|
|
|
|
_EOF_
|
|
|
|
w_try_regedit "$W_TMP_WIN"\\unifont.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_usp10()
|
|
{
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=cebbacd8-c094-4255-b702-de3bb768148f
|
|
w_download . http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe e739c40d747e7c27aacdb07b50925b1635ee7366
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE"/InstMsiA.exe
|
|
w_try cp -f "$W_TMP"/usp10.dll "$W_SYSTEM32_DLLS"
|
|
w_override_dlls native,builtin usp10
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_utorrent()
|
|
{
|
|
# Torrent client supported on Windows,Mac OSX, Linux through WINE
|
|
# Oct 2010 2.0.4 sha1sum 8382b8a7bc625d68b6efe18a7b9e5488dc0119ee
|
|
# Nov 6 2010 2.0.4 sha1sum 263a91693d0976473cd321cd6f1b0103a814f3ad
|
|
# Dev 17 2010 2.2 sha1sum 0c95bdfba07421fe706b30ee2ec6779217c5dce4, hangs, see wine bug 24946
|
|
w_download utorrent http://download.utorrent.com/2.0.4/utorrent.exe 263a91693d0976473cd321cd6f1b0103a814f3ad
|
|
|
|
w_try cp -f "$W_CACHE"/utorrent/utorrent.exe "$W_WINDIR_UNIX"/utorrent.exe
|
|
w_warn "utorrent is now installed to $W_WINDIR_UNIX/utorrent.exe"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vb2run()
|
|
{
|
|
# Not referenced on MS web anymore. But the old Microsoft Software Library FTP still has it.
|
|
# See ftp://ftp.microsoft.com/Softlib/index.txt
|
|
w_download . ftp://ftp.microsoft.com/Softlib/MSLFILES/VBRUN200.EXE ac0568b73ee375408778e9b505df995f79ab907e
|
|
w_try_unzip -d "$W_TMP" "$W_CACHE"/VBRUN200.EXE
|
|
w_try cp -f "$W_TMP/VBRUN200.DLL" "$W_SYSTEM32_DLLS"
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vb3run()
|
|
{
|
|
# See http://support.microsoft.com/kb/196285
|
|
w_download . http://download.microsoft.com/download/vb30/utility/1/w9xnt4/en-us/vb3run.exe 518fcfefde9bf680695cadd06512efadc5ac2aa7
|
|
w_try_unzip -d "$W_TMP" "$W_CACHE"/vb3run.exe
|
|
w_try cp -f "$W_TMP/Vbrun300.dll" "$W_SYSTEM32_DLLS"
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vb4run()
|
|
{
|
|
# See http://support.microsoft.com/kb/196286
|
|
w_download . http://download.microsoft.com/download/vb40ent/sample27/1/w9xnt4/en-us/vb4run.exe 83e968063272e97bfffd628a73bf0ff5f8e1023b
|
|
w_try_unzip -d "$W_TMP" "$W_CACHE"/vb4run.exe
|
|
w_try cp -f "$W_TMP/Vb40032.dll" "$W_SYSTEM32_DLLS"
|
|
w_try cp -f "$W_TMP/Vb40016.dll" "$W_SYSTEM32_DLLS"
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vbvm50()
|
|
{
|
|
w_download . http://download.microsoft.com/download/vb50pro/utility/1/win98/en-us/msvbvm50.exe 28bfaf09b8ac32cf5ffa81252f3e2fadcb3a8f27
|
|
w_try $WINE "$W_CACHE"/msvbvm50.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vbrun60()
|
|
{
|
|
if test ! -f "$W_CACHE"/vbrun60sp6.exe
|
|
then
|
|
w_download . http://download.microsoft.com/download/5/a/d/5ad868a0-8ecd-4bb0-a882-fe53eb7ef348/VB6.0-KB290887-X86.exe 73ef177008005675134d2f02c6f580515ab0d842
|
|
rm -rf "$W_TMP"/*
|
|
|
|
w_try $WINE "$W_CACHE"/VB6.0-KB290887-X86.exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q
|
|
if test ! -f "$W_TMP"/vbrun60sp6.exe
|
|
then
|
|
w_die vbrun60sp6.exe not found
|
|
fi
|
|
w_try mv "$W_TMP"/vbrun60sp6.exe "$W_CACHE"
|
|
fi
|
|
|
|
# Delete some fake DLLs to ensure that the installer overwrites them.
|
|
rm -f "$W_SYSTEM32_DLLS"/comcat.dll
|
|
rm -f "$W_SYSTEM32_DLLS"/oleaut32.dll
|
|
rm -f "$W_SYSTEM32_DLLS"/olepro32.dll
|
|
rm -f "$W_SYSTEM32_DLLS"/stdole2.tlb
|
|
# Exits with status 43 for some reason?
|
|
$WINE "$W_CACHE"/vbrun60sp6.exe $W_UNATTENDED_SLASH_Q
|
|
|
|
status=$?
|
|
case $status in
|
|
0|43) ;;
|
|
*) w_die $W_PACKAGE installation failed
|
|
esac
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vcrun6()
|
|
{
|
|
# Load the Visual C++ 6 runtime libraries, including the elusive mfc42u.dll
|
|
|
|
# If this is just a dependency check, don't re-install
|
|
if test $W_PACKAGE != vcrun6 && test -f "$W_SYSTEM32_DLLS"/mfc42u.dll
|
|
then
|
|
echo "prerequisite vcrun6 already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
if test ! -f "$W_CACHE"/vcredist.exe
|
|
then
|
|
w_download . http://download.microsoft.com/download/vc60pro/update/1/w9xnt4/en-us/vc6redistsetup_enu.exe 382c8f5a7f41189af8d4165cf441f274b7e2a457
|
|
rm -rf "$W_TMP"/*
|
|
|
|
w_try $WINE "$W_CACHE"/vc6redistsetup_enu.exe "/T:$W_TMP_WIN" /c $W_UNATTENDED_SLASH_Q
|
|
if test ! -f "$W_TMP"/vcredist.exe
|
|
then
|
|
w_die vcredist.exe not found
|
|
fi
|
|
mv "$W_TMP"/vcredist.exe "$W_CACHE"
|
|
fi
|
|
# Delete some fake dlls to avoid vcredist installer warnings
|
|
rm -f "$W_SYSTEM32_DLLS"/comcat.dll
|
|
rm -f "$W_SYSTEM32_DLLS"/msvcrt.dll
|
|
rm -f "$W_SYSTEM32_DLLS"/oleaut32.dll
|
|
rm -f "$W_SYSTEM32_DLLS"/olepro32.dll
|
|
rm -f "$W_SYSTEM32_DLLS"/stdole2.tlb
|
|
# vcredist still exits with status 43. Anyone know why?
|
|
$WINE "$W_CACHE"/vcredist.exe
|
|
|
|
status=$?
|
|
case $status in
|
|
0|43) ;;
|
|
*) w_die $W_PACKAGE installation failed
|
|
esac
|
|
|
|
# And then some apps need mfc42u.dll, dunno what right way
|
|
# is to get it, vcredist doesn't install it by default?
|
|
w_try_cabextract "$W_CACHE"/vcredist.exe -d "$W_SYSTEM32_DLLS" -F mfc42u.dll
|
|
|
|
w_override_dlls native,builtin msvcrt
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vcrun6sp6()
|
|
{
|
|
if test ! -f vcredistsp6.exe
|
|
then
|
|
w_download . http://download.microsoft.com/download/1/9/f/19fe4660-5792-4683-99e0-8d48c22eed74/Vs6sp6.exe 2292437a8967349261c810ae8b456592eeb76620
|
|
|
|
# No EULA is presented when passing command-line extraction arguments,
|
|
# so we'll simplify extraction with cabextract. We'll also w_try to avoid
|
|
# overwriting the older vcrun6 redist by renaming the extracted file.
|
|
w_try_cabextract "$W_CACHE"/Vs6sp6.exe -d "$W_TMP" -F vcredist.exe
|
|
w_try mv "$W_TMP"/vcredist.exe "$W_CACHE"/vcredistsp6.exe
|
|
fi
|
|
|
|
# Delete some fake dlls to avoid vcredist installer warnings
|
|
w_try rm -f "$W_SYSTEM32_DLLS"/comcat.dll
|
|
w_try rm -f "$W_SYSTEM32_DLLS"/msvcrt.dll
|
|
w_try rm -f "$W_SYSTEM32_DLLS"/oleaut32.dll
|
|
w_try rm -f "$W_SYSTEM32_DLLS"/olepro32.dll
|
|
w_try rm -f "$W_SYSTEM32_DLLS"/stdole2.tlb
|
|
# vcredist still exits with status 43. Anyone know why?
|
|
$WINE "$W_CACHE"/vcredistsp6.exe
|
|
|
|
status=$?
|
|
case $status in
|
|
0|43) ;;
|
|
*) w_die $W_PACKAGE installation failed
|
|
esac
|
|
|
|
# And then some apps need mfc42u.dll, dunno what right way
|
|
# is to get it, vcredist doesn't install it by default?
|
|
w_try_cabextract "$W_CACHE"/vcredistsp6.exe -d "$W_SYSTEM32_DLLS" -F mfc42u.dll
|
|
|
|
w_override_dlls native,builtin msvcrt
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vcrun2003()
|
|
{
|
|
# Load the Visual C++ 2003 runtime libraries
|
|
# Sadly, I know of no Microsoft URL for these
|
|
echo "Installing BZFlag (which comes with the Visual C++ 2003 runtimes)"
|
|
w_download . $SOURCEFORGE/bzflag/BZEditW32_1.6.5_Installer.exe bdd1b32c4202fd77e6513fd507c8236888b09121
|
|
w_try $WINE "$W_CACHE"/BZEditW32_1.6.5_Installer.exe $W_UNATTENDED_SLASH_S
|
|
w_try cp "$W_PROGRAMS_X86_UNIX/BZEdit1.6.5"/m*71* "$W_SYSTEM32_DLLS"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vcrun2005()
|
|
{
|
|
# Load the latest Visual C++ 2005 runtime libraries
|
|
# If this is just a dependency check, don't re-install
|
|
|
|
# SP1 + ATL security fix build 4053 (MS09-035)
|
|
# See http://www.microsoft.com/downloads/details.aspx?familyid=766A6AF7-EC73-40FF-B072-9112BAB119C2
|
|
if test $W_PACKAGE != vcrun2005 && test -d "$W_WINDIR_UNIX"/winsxs/x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_b77cec8e
|
|
then
|
|
echo "prerequisite vcrun2005 already installed, skipping"
|
|
return
|
|
fi
|
|
w_download vcrun2005-ms09-035 http://download.microsoft.com/download/6/B/B/6BB661D6-A8AE-4819-B79F-236472F6070C/vcredist_x86.exe e052789ebad7dc8d6f8505a9295b0576babd125e
|
|
cd "$W_CACHE"
|
|
cd vcrun2005-ms09-035
|
|
w_override_dlls native,builtin msvcr80
|
|
w_try $WINE vcredist_x86.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vcrun2008()
|
|
{
|
|
# For the moment, assume windows already has this.
|
|
case "$OS" in
|
|
"Windows_NT")
|
|
return
|
|
;;
|
|
esac
|
|
|
|
# Work around bug 5351 (http://bugs.winehq.org/show_bug.cgi?id=5351). In recent
|
|
# wine (>= 1.1.7) the bug is fixed. The workaround doesn't hurt anything, and lets
|
|
# installer work on older Wine (e.g., the stabe 1.0.1).
|
|
volnum
|
|
|
|
# Load the latest Visual C++ 2008 runtime libraries
|
|
# If this is just a dependency check, don't re-install
|
|
# SP1 + ATL security fix build 4148 (MS09-035)
|
|
# See http://www.microsoft.com/downloads/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c
|
|
if test $W_PACKAGE != vcrun2008 && test -d "$W_WINDIR_UNIX"/winsxs/x86_Microsoft.VC90.MFC_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_a57c1f53
|
|
then
|
|
echo "prerequisite vcrun2008 already installed, skipping"
|
|
return
|
|
fi
|
|
w_download vcrun2008-ms09-035 http://download.microsoft.com/download/9/7/7/977B481A-7BA6-4E30-AC40-ED51EB2028F2/vcredist_x86.exe bd18409cfe75b88c2a9432d36d96f4bf125a3237
|
|
w_override_dlls native,builtin msvcr90
|
|
w_try $WINE "$W_CACHE"/vcrun2008-ms09-035/vcredist_x86.exe $W_UNATTENDED_SLASH_Q
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vcrun2010()
|
|
{
|
|
# Load the Visual C++ 2010 runtime libraries
|
|
# See http://www.microsoft.com/downloads/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84
|
|
w_download vcrun2010 http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B14A-475AB85EEF6E/vcredist_x86.exe 372d9c1670343d3fb252209ba210d4dc4d67d358
|
|
w_override_dlls native,builtin msvcr100
|
|
# Workaround Wine bug http://bugs.winehq.org/show_bug.cgi?id=23427
|
|
load_msxml3
|
|
w_try $WINE "$W_CACHE"/vcrun2010/vcredist_x86.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vjrun20()
|
|
{
|
|
if [ $W_ARCH = win64 ]
|
|
then
|
|
w_warn "vjrun20 depends on dotnet20, which doesn't work on 64-bit wine yet. Skipping."
|
|
return
|
|
fi
|
|
load_dotnet20
|
|
# See http://www.microsoft.com/downloads/details.aspx?FamilyId=E9D87F37-2ADC-4C32-95B3-B5E3A21BAB2C
|
|
w_download vjrun20 http://download.microsoft.com/download/9/2/3/92338cd0-759f-4815-8981-24b437be74ef/vjredist.exe 80a098e36b90d159da915aebfbfbacf35f302bd8
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
w_try $WINE "$W_CACHE"/vjrun20/vjredist.exe /q /C:"install /QNT"
|
|
else
|
|
w_try $WINE "$W_CACHE"/vjrun20/vjredist.exe
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vc2003toolkit()
|
|
{
|
|
# http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-vc/2679/ANN-Microsoft-Visual-C-Toolkit-2003
|
|
#w_download . http://download.microsoft.com/download/3/9/b/39bac755-0a1e-4d0b-b72c-3a158b7444c4/VCToolkitSetup.exe 956c81c3106b97042c4126b23c81885c4b5211f4
|
|
# I'm going to link to this for now even though it's not straight from microsoft
|
|
# because it's a developer tool rather than a runtime, and
|
|
# I'm in the middle of trying to get lots of open source windows
|
|
# apps to build on Wine; see http://wiki.winehq.org/UnitTestSuites
|
|
# (Plus the sha1sum, which I still have from a copy straight from microsoft,
|
|
# protects us somewhat against corrupted copies.)
|
|
w_download . http://npg.dl.ac.uk/MIDAS/MIDAS_Release/VCToolkitSetup.exe 956c81c3106b97042c4126b23c81885c4b5211f4
|
|
cd "$W_CACHE"
|
|
w_try $WINE VCToolkitSetup.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vc2005express()
|
|
{
|
|
# Currently broken in wine, see http://bugs.winehq.org/show_bug.cgi?id=21010
|
|
# Thanks to http://blogs.msdn.com/astebner/articles/551674.aspx for the recipe
|
|
load_dotnet20
|
|
load_msxml6
|
|
|
|
# http://go.microsoft.com/fwlink/?LinkId=51410
|
|
w_download vc2005express http://download.microsoft.com/download/8/3/a/83aad8f9-38ba-4503-b3cd-ba28c360c27b/ENU/vcsetup.exe 0292ae1d576edd8ee5350a27113c94c9f9958d5c
|
|
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
# Thanks to Aaron Stebner's unattended install recipe
|
|
# http://blogs.msdn.com/astebner/archive/2006/03/19/555326.aspx
|
|
|
|
# "http://go.microsoft.com/fwlink/?LinkId=51417"
|
|
w_download vc2005express http://download.microsoft.com/download/0/5/A/05AA45B9-A4BE-4872-8D57-733DF5297284/Ixpvc.exe ce0da62b5649f33c7a150de276d799fb2d68d12a
|
|
|
|
cd "$W_TMP"
|
|
rm -rf vc2005express.tmp || true
|
|
mkdir vc2005express.tmp
|
|
cd vc2005express.tmp
|
|
w_try_cabextract "$W_CACHE"/vc2005express/vcsetup.exe
|
|
cp "$W_CACHE"/vc2005express/Ixpvc.exe .
|
|
chmod +x Ixpvc.exe
|
|
# Add /qn after ReallySuppress for a really silent install (but then you won't see any errors)
|
|
|
|
w_try $WINE Ixpvc /t:"$W_TMP_WIN\\\\vc2005express.tmp" /q:a /c:"msiexec /i vcsetup.msi VSEXTUI=1 ADDLOCAL=ALL REBOOT=ReallySuppress"
|
|
|
|
cd ..
|
|
rm -rf vc2005express.tmp || true
|
|
else
|
|
w_warn "Don't forget to install the IDE, or mt.exe won't be installed"
|
|
cd "$W_CACHE"/vc2005express
|
|
w_try $WINE vcsetup.exe
|
|
# The interactive installer seems to be asynchronous, so wait until one of the last files is created
|
|
while test ! -f "$W_PROGRAMS_UNIX/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat"
|
|
do
|
|
echo "Waiting for install to finish..."
|
|
sleep 10
|
|
done
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vc2005expresssp1()
|
|
{
|
|
w_warn "$W_PACKAGE does not work yet"
|
|
if test ! -f "$W_PROGRAMS_UNIX/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat"
|
|
then
|
|
w_die "install vc2005express first (this verb will be merged into that once it's debugged)"
|
|
fi
|
|
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyId=7B0B0339-613A-46E6-AB4D-080D4D4A8C4E
|
|
w_download vc2005express download.microsoft.com/download/7/7/3/7737290f-98e8-45bf-9075-85cc6ae34bf1/VS80sp1-KB926748-X86-INTL.exe 8b9a0172efad64774aa122f29e093ad2043b308d
|
|
w_try $WINE "$W_CACHE"/vc2005express/VS80sp1-KB926748-X86-INTL.exe
|
|
}
|
|
|
|
load_vcdmount()
|
|
{
|
|
if test "$WINE" != ""
|
|
then
|
|
return
|
|
fi
|
|
|
|
# Call only on real Windows.
|
|
# Sets VCD_DIR and ISO_MOUNT_ROOT
|
|
|
|
# The only free mount tool I know for Windows Vista is Virtual CloneDrive,
|
|
# which can be downloaded at
|
|
# http://www.slysoft.com/en/virtual-clonedrive.html
|
|
# FIXME: actually install it here
|
|
|
|
# Locate vcdmount.exe.
|
|
VCD_DIR="Elaborate Bytes/VirtualCloneDrive"
|
|
if test ! -x "$W_PROGRAMS_UNIX/$VCD_DIR/vcdmount.exe" && test ! -x "$W_PROGRAMS_X86_UNIX/$VCD_DIR/vcdmount.exe"
|
|
then
|
|
w_warn "Installing Virtual CloneDrive"
|
|
w_download . http://static.slysoft.com/SetupVirtualCloneDrive.exe
|
|
# have to use cmd else vista won't let cygwin run .exe's?
|
|
chmod +x "$W_CACHE"/SetupVirtualCloneDrive.exe
|
|
cd "$W_CACHE"
|
|
cmd /c SetupVirtualCloneDrive.exe
|
|
cd "$olddir"
|
|
fi
|
|
if test -x "$W_PROGRAMS_UNIX/$VCD_DIR/vcdmount.exe"
|
|
then
|
|
VCD_DIR="$W_PROGRAMS_UNIX/$VCD_DIR"
|
|
elif test -x "$W_PROGRAMS_X86_UNIX/$VCD_DIR/vcdmount.exe"
|
|
then
|
|
VCD_DIR="$W_PROGRAMS_X86_UNIX/$VCD_DIR"
|
|
else
|
|
w_die "can't find Virtual CloneDrive?"
|
|
fi
|
|
|
|
# FIXME: Use WMI to locate the drive named
|
|
# "ELBY CLONEDRIVE..." using WMI as described in
|
|
# http://delphihaven.wordpress.com/2009/07/05/using-wmi-to-get-a-drive-friendly-name/
|
|
# For now, you just have to hardcode it for your system :-(
|
|
w_warn "You probably need to edit the script to tell it which drive VirtualCloneDrive picked"
|
|
for letter in e f g h
|
|
do
|
|
ISO_MOUNT_ROOT=/cygdrive/$letter
|
|
test -d $ISO_MOUNT_ROOT || break
|
|
done
|
|
test -d $ISO_MOUNT_ROOT && w_die "cannot find the VirtualCloneDrive"
|
|
}
|
|
|
|
iso_mount()
|
|
{
|
|
my_img="$1"
|
|
|
|
if test "$WINE" = ""
|
|
then
|
|
load_vcdmount
|
|
my_img_win="`$XXXPATH -w $my_img | tr '\012' ' ' | sed 's/ $//'`"
|
|
cd "$VCD_DIR"
|
|
w_try vcdmount.exe /l=$letter "$my_img_win"
|
|
cd "$olddir"
|
|
while ! test -d "$ISO_MOUNT_ROOT"
|
|
do
|
|
echo "Waiting for mount to finish"
|
|
sleep 1
|
|
done
|
|
else
|
|
# Linux
|
|
case "$SUDO" in
|
|
gksudo)
|
|
w_try $SUDO "mkdir -p $ISO_MOUNT_ROOT"
|
|
w_try $SUDO "mount -o ro,loop $my_img $ISO_MOUNT_ROOT"
|
|
;;
|
|
*)
|
|
w_try $SUDO mkdir -p $ISO_MOUNT_ROOT
|
|
w_try $SUDO mount -o ro,loop "$my_img" $ISO_MOUNT_ROOT
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
iso_umount()
|
|
{
|
|
if test "$WINE" = ""
|
|
then
|
|
# Windows
|
|
load_vcdmount
|
|
cd "$VCD_DIR"
|
|
vcdmount /u
|
|
cd "$olddir"
|
|
else
|
|
case "$SUDO" in
|
|
gksudo)
|
|
$SUDO "umount $ISO_MOUNT_ROOT"
|
|
w_try $SUDO "rm -rf $ISO_MOUNT_ROOT"
|
|
;;
|
|
*)
|
|
$SUDO umount $ISO_MOUNT_ROOT
|
|
w_try $SUDO rm -rf $ISO_MOUNT_ROOT
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vc2005trial()
|
|
{
|
|
load_vcrun6
|
|
load_dotnet20
|
|
load_msxml6
|
|
load_vcdmount
|
|
|
|
if test ! -x "$W_PROGRAMS_UNIX/7-Zip/7z.exe"
|
|
then
|
|
w_warn "Installing 7-zip file archiver for vc2005trial image extraction"
|
|
load_7zip
|
|
fi
|
|
|
|
# This is the last file that 7-zip extracts.
|
|
if test ! -f "$W_CACHE/vc2005trial/vs/wcu/runmsi.exe"
|
|
then
|
|
w_warn "Downloading/checksumming Visual C++ 2005 Trial. This will take some time!"
|
|
w_download . http://download.microsoft.com/download/6/f/5/6f5f7a01-50bb-422d-8742-c099c8896969/En_vs_2005_vsts_180_Trial.img f66ae07618d67e693ca0524d3582208c20e07823
|
|
w_try $WINE "$W_PROGRAMS_WIN"/7-Zip/7z.exe x -y -o"$W_CACHE_WIN"/vc2005trial "$W_CACHE_WIN"/En_vs_2005_vsts_180_Trial.img
|
|
fi
|
|
|
|
verify_sha1sum 15433993ab7573c5154dbea2dcb65450f2adbf5c "$W_CACHE/vc2005trial/vs/wcu/runmsi.exe"
|
|
|
|
# FIXME: do this right
|
|
rm -f /cygdrive/c/Users/$USER/AppData/local/temp/dd_vsinstall80.txt
|
|
|
|
if [ $W_UNATTENDED_SLASH_Q ]
|
|
then
|
|
w_download . "http://winezeug.googlecode.com/svn/trunk/winetricks_files/vc2005trial.ahk" e22a01c0c6f92dabd3d6d471798357b8c5c01272
|
|
# FIXME: use standard install of autohotkey
|
|
w_download . "http://winezeug.googlecode.com/svn/trunk/appinstall/tools/autohotkey/autohotkey.exe" 7af551a851da5ccb8a98ba980b6b19ec5892884d
|
|
w_try cd "$W_CACHE"/vc2005trial/vs/Setup
|
|
w_try $WINE "$W_CACHE_WIN"/autohotkey.exe "$W_CACHE_WIN"/vc2005trial.ahk
|
|
else
|
|
w_try cd "$W_CACHE"/vc2005trial/vs/Setup
|
|
w_try $WINE setup.exe
|
|
|
|
# FIXME: unify these and make the windows one right
|
|
if test "$WINE" = ""
|
|
then
|
|
while ! tr -d '\000' < "$TEMP"/dd_vsinstall80.txt | grep End_Session
|
|
do
|
|
sleep 10
|
|
echo waiting for setup to finish
|
|
done
|
|
else
|
|
while ps $psargs | grep -q setup.exe
|
|
do
|
|
sleep 10
|
|
echo waiting for setup to finish
|
|
done
|
|
fi
|
|
fi
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vc2005sp1()
|
|
{
|
|
if test ! -f "$W_PROGRAMS_UNIX/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat"
|
|
then
|
|
w_die "install vc2005trial first (this verb will be merged into that once it's debugged)"
|
|
fi
|
|
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc
|
|
w_download vc2005sp1 http://download.microsoft.com/download/6/3/c/63c69e5d-74c9-48ea-b905-30ac3831f288/VS80sp1-KB926601-X86-ENU.exe d4b5c73253a7a4f5b4b389f41b94fea4a7247b57
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyID=7c8729dc-06a2-4538-a90d-ff9464dc0197
|
|
w_download vc2005sp1 http://download.microsoft.com/download/D/2/3/D23F9F62-3DEE-4EC0-B3B9-D64E9F573D1F/VS80sp1-KB971090-X86-INTL.exe
|
|
cd "$W_CACHE"/vc2005sp1
|
|
w_try $WINE VS80sp1-KB926601-X86-ENU.exe
|
|
w_try $WINE VS80sp1-KB971090-X86-INTL.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_one_hotfix()
|
|
{
|
|
kb=$1
|
|
downloadid=$2
|
|
downloadfile=$3
|
|
hotfix=$4
|
|
|
|
cd "$W_CACHE/vs2005hotfixes"
|
|
if test ! -f $downloadfile
|
|
then
|
|
case "$OS" in
|
|
"Windows_NT")
|
|
$WINE cygstart "https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=$downloadid" ;;
|
|
*) # fails for chrome, see http://crbug.com/32800
|
|
xdg-open "https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=$downloadid" ;;
|
|
esac
|
|
fi
|
|
while test ! -f $downloadfile
|
|
do
|
|
echo "Waiting for you to save $downloadfile in $W_CACHE_WIN/vs2005hotfixes"
|
|
sleep 1
|
|
done
|
|
if test ! -f $hotfix
|
|
then
|
|
w_try_unzip -o $downloadfile
|
|
fi
|
|
w_try $WINE $hotfix
|
|
}
|
|
|
|
load_vc2005hotfix()
|
|
{
|
|
# Loads the hotfixes recommended in http://dev.chromium.org/developers/how-tos/build-instructions-windows#TOC-Additional-free-downloads
|
|
w_warn "This does not work in Wine yet."
|
|
if test ! -f "$W_PROGRAMS_UNIX/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat"
|
|
then
|
|
w_die "install vc2005trial and vc2005sp1 first"
|
|
fi
|
|
|
|
mkdir -p "$W_CACHE/vs2005hotfixes"
|
|
case "$OS" in
|
|
"Windows_NT") $WINE cygstart "$W_CACHE_WIN\\vs2005hotfixes" ;;
|
|
*) xdg-open "$W_CACHE/vs2005hotfixes" ;;
|
|
esac
|
|
|
|
load_one_hotfix KB935225 7258 306439_ENU_i386_zip.exe VS80sp1-KB935225-X86-ENU.exe
|
|
load_one_hotfix KB947315 11587 341798_ENU_i386_zip.exe VS80sp1-KB947315-X86-ENU.exe
|
|
load_one_hotfix KB949009 18623 VS80sp1-KB949009-X86-INTL.exe VS80sp1-KB949009-X86-INTL.exe
|
|
load_one_hotfix KB946310 10644 335739_ENU_i386_zip.exe VS80sp1-KB946310-X86-ENU.exe
|
|
# KB971090 is part of the sp1 verb, since it can be downloaded normally
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
save_vc2005_tarball()
|
|
{
|
|
# Save just the interesting parts of Visual Studio 2005 (edit to taste).
|
|
# Workaround for vc 2005 sp1 and hotfixes not installing on Wine.
|
|
# In Windows, do "winetricks vc2005trial vc2005sp1 vc2005hotfix vc2005save",
|
|
# then reboot to Linux, grab vc8.tgz from the Windows partition,
|
|
# and do "winetricks vc2005trial vc2005load".
|
|
tar -C "$W_PROGRAMS_X86_UNIX" \
|
|
--exclude "Crystal Reports" \
|
|
--exclude "DIA SDK" \
|
|
--exclude "EnterpriseFrameworks" \
|
|
--exclude "Microsoft Visual Studio 2005 Team Suite - ENU" \
|
|
--exclude "ReportViewer" \
|
|
--exclude "SmartDevices" \
|
|
--exclude "Team Tools" \
|
|
--exclude "VB" \
|
|
--exclude "ce" \
|
|
--exclude "Visual Studio Tools for Office" \
|
|
--exclude "Xml" \
|
|
--exclude "sqlserver" \
|
|
-czvf vc8.tgz "Microsoft Visual Studio 8"
|
|
}
|
|
|
|
load_vc2005_tarball()
|
|
{
|
|
tar -C "$W_PROGRAMS_X86_UNIX" -xzvf vc8.tgz
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vc2008trial()
|
|
{
|
|
load_vcrun6
|
|
load_dotnet20
|
|
load_msxml6
|
|
load_vcdmount
|
|
|
|
w_warn "Visual C++ 2008 Trial does not yet work in Wine, and this recipe isn't quite debugged even in windows yet."
|
|
w_warn "Downloading/checksumming Visual C++ 2008 Trial. This will take some time!"
|
|
# http://www.microsoft.com/downloads/details.aspx?FamilyID=83c3a1ec-ed72-4a79-8961-25635db0192b
|
|
w_download vc2008trial http://download.microsoft.com/download/8/1/d/81d3f35e-fa03-485b-953b-ff952e402520/VS2008ProEdition90dayTrialENUX1435622.iso dfb601096f62fd75af6ad62b277be79793f53b56
|
|
|
|
iso_umount
|
|
iso_mount "$W_CACHE"/vc2008trial/VS2008ProEdition90dayTrialENUX1435622.iso
|
|
|
|
# FIXME: do this right
|
|
rm -f /cygdrive/c/Users/$USER/AppData/local/temp/dd_vsinstall80.txt
|
|
|
|
if true
|
|
then
|
|
w_try cd "$ISO_MOUNT_ROOT/Setup"
|
|
w_try $WINE setup.exe
|
|
|
|
# FIXME: unify these and make the windows one right
|
|
if test "$WINE" = ""
|
|
then
|
|
while ! tr -d '\000' < /cygdrive/c/Users/$USER/AppData/local/temp/dd_vsinstall80.txt | grep End_Session
|
|
do
|
|
sleep 10
|
|
echo waiting for setup to finish
|
|
done
|
|
else
|
|
while ps $psargs | grep -q setup.exe
|
|
do
|
|
sleep 10
|
|
echo waiting for setup to finish
|
|
done
|
|
fi
|
|
fi
|
|
|
|
iso_umount
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vc2008sp1()
|
|
{
|
|
echo pfdu is ${W_PROGRAMS_UNIX}
|
|
echo setting FOO
|
|
FOO="${W_PROGRAMS_UNIX}/Microsoft Visual Studio 9.0/Microsoft Visual Studio 2008 Professional Edition - ENU"
|
|
echo FOO set to $FOO
|
|
if test ! -d "$FOO"
|
|
then
|
|
w_die "install vc2008trial first (this verb will be merged into that once it's debugged)"
|
|
fi
|
|
|
|
# http://www.microsoft.com/downloads/details.aspx?familyid=FBEE1648-7106-44A7-9649-6D9F6D58056E
|
|
w_download vc2008sp1 http://download.microsoft.com/download/f/6/7/f67fdf05-0586-413f-8231-affbe12f80a8/VS90sp1-KB945140-ENU.exe 91c146dffa96c6d8f9ceb2b5235b04349cf93ed9
|
|
cd "$W_CACHE"/vc2008sp1
|
|
w_try $WINE VS90sp1-KB945140-ENU.exe
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_vlc()
|
|
{
|
|
w_download . $SOURCEFORGE/vlc/vlc-1.1.0-win32.exe 501b6cb12d4916ed11ec9dac9e394add9227b3be
|
|
w_try $WINE "$W_CACHE"/vlc-1.1.0-win32.exe $W_UNATTENDED_SLASH_S
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_windowscodecs()
|
|
{
|
|
w_download . http://download.microsoft.com/download/f/f/1/ff178bb1-da91-48ed-89e5-478a99387d4f/wic_x86_enu.exe 53c18652ac2f8a51303deb48a1b7abbdb1db427f
|
|
|
|
# Avoid a file existence check.
|
|
rm -f "$W_SYSTEM32_DLLS"/windowscodecs.dll
|
|
w_override_dlls native,builtin windowscodecs
|
|
|
|
# Always run the WIC installer in passive mode.
|
|
# See http://bugs.winehq.org/show_bug.cgi?id=16876 and
|
|
# http://bugs.winehq.org/show_bug.cgi?id=23232
|
|
w_try $WINE "$W_CACHE"/wic_x86_enu.exe /passive
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_winhttp()
|
|
{
|
|
# See https://www.microsoft.com/downloads/en/details.aspx?FamilyID=3ee866a0-3a09-4fdf-8bdb-c906850ab9f2
|
|
w_download winhttp http://download.microsoft.com/download/5/d/8/5d802926-6bab-45fa-b96e-bee15413523b/Windows2000-KB842773-x86-ENU.EXE e676d47e065a314bbf1d15b096a67aede6b0539a
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F winhttp.dll "$W_CACHE"/winhttp/Windows2000-KB842773-x86-ENU.EXE
|
|
w_override_dlls native,builtin winhttp
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wininet()
|
|
{
|
|
# This is an updated wininet from IE 5.0.1.
|
|
# (Good enough for Active Worlds browser. Also helps "Avatar - Legends of the Arena" get to login screen.)
|
|
# See http://www.microsoft.com/downloads/details.aspx?familyid=6DEE32AB-B618-4FB3-9A45-CDD08162E167
|
|
w_download . http://download.microsoft.com/download/ie5/Update/1/WIN98/EN-US/3725.exe b048e0b4e303298de3317b16f7008c43ca71ddfe
|
|
w_try_cabextract --directory="$W_TMP" "$W_CACHE/3725.exe"
|
|
w_try cp -f "$W_TMP"/Wininet.dll "$W_SYSTEM32_DLLS"/wininet.dll
|
|
w_override_dlls native,builtin wininet
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wme9()
|
|
{
|
|
if [ $W_ARCH = win64 ]
|
|
then
|
|
w_die "Installer doesn't support 64-bit architecture."
|
|
fi
|
|
# See also http://www.microsoft.com/downloads/details.aspx?FamilyID=5691ba02-e496-465a-bba9-b2f1182cdf24
|
|
w_download wme9 http://download.microsoft.com/download/8/1/f/81f9402f-efdd-439d-b2a4-089563199d47/WMEncoder.exe 7a3f8781f3e5705651992ef0150ee30bc1295116
|
|
|
|
w_try $WINE "$W_CACHE"/wme9/WMEncoder.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wmi()
|
|
{
|
|
if test $W_ARCH = win64
|
|
then
|
|
w_die "Installer doesn't support 64-bit architecture."
|
|
fi
|
|
|
|
# WMI for NT4.0 need validation: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c174cfb1-ef67-471d-9277-4c2b1014a31e
|
|
# See also http://www.microsoft.com/downloads/en/details.aspx?FamilyId=98A4C5BA-337B-4E92-8C18-A63847760EA5
|
|
w_download . http://download.microsoft.com/download/platformsdk/wmi9x/1.5/W9X/EN-US/wmi9x.exe 62752e9c1b879688c26f205eebf07d3783906c3e
|
|
|
|
w_set_winver win98
|
|
w_override_dlls native,builtin wbemprox.dll wmiutils.dll
|
|
# Note: there is a crash in the background towards the end, doesn't seem to hurt; see http://bugs.winehq.org/show_bug.cgi?id=7920
|
|
w_try $WINE "$W_CACHE"/wmi9x.exe $W_UNATTENDED_SLASH_S
|
|
w_unset_winver
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wmp9()
|
|
{
|
|
# Not really expected to work well yet; see
|
|
# http://appdb.winehq.org/appview.php?versionId=1449
|
|
|
|
if [ $W_ARCH = win64 ]
|
|
then
|
|
w_die "Installer doesn't support 64-bit architecture."
|
|
fi
|
|
|
|
w_call wsh57
|
|
|
|
w_set_winver win2k
|
|
|
|
# See also http://www.microsoft.com/windows/windowsmedia/player/9series/default.aspx
|
|
w_download wmp9 http://download.microsoft.com/download/1/b/c/1bc0b1a3-c839-4b36-8f3c-19847ba09299/MPSetup.exe 580536d10657fa3868de2869a3902d31a0de791b
|
|
|
|
# Also grab the codecs
|
|
# See http://www.microsoft.com/downloads/details.aspx?FamilyID=06fcaab7-dcc9-466b-b0c4-04db144bb601
|
|
w_download wmp9 http://download.microsoft.com/download/5/c/2/5c29d825-61eb-4b16-8eb8-58367d0464d5/WM9Codecs9x.exe 8b76bdcbea0057eb12b7966edab4b942ddacc253
|
|
|
|
# Have to run twice; see http://bugs.winehq.org/show_bug.cgi?id=1886
|
|
cd "$W_CACHE"/wmp9
|
|
w_try $WINE MPSetup.exe $W_UNATTENDED_SLASH_Q
|
|
w_try $WINE MPSetup.exe $W_UNATTENDED_SLASH_Q
|
|
w_try $WINE WM9Codecs9x.exe $W_UNATTENDED_SLASH_Q
|
|
|
|
# Disable WMP's services, since they depend on unimplemented stuff, they trigger the GUI debugger several times
|
|
w_try_regedit /D "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdr4_2K"
|
|
w_try_regedit /D "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdralw2k"
|
|
|
|
w_unset_winver
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wmp10()
|
|
{
|
|
# See http://appdb.winehq.org/appview.php?iVersionId=3212
|
|
|
|
load_wsh57
|
|
|
|
# See also http://www.microsoft.com/windows/windowsmedia/player/10
|
|
w_download . http://download.microsoft.com/download/1/2/A/12A31F29-2FA9-4F50-B95D-E45EF7013F87/MP10Setup.exe 69862273a5d9d97b4a2e5a3bd93898d259e86657
|
|
|
|
# Crashes on exit, but otherwise ok; see http://bugs.winehq.org/show_bug.cgi?id=12633
|
|
echo Executing $WINE "$W_CACHE"/MP10Setup.exe $W_UNATTENDED_SLASH_Q
|
|
w_try $WINE "$W_CACHE"/MP10Setup.exe $W_UNATTENDED_SLASH_Q
|
|
|
|
# Also install the codecs
|
|
# See http://www.microsoft.com/downloads/details.aspx?FamilyID=06fcaab7-dcc9-466b-b0c4-04db144bb601
|
|
w_download . http://download.microsoft.com/download/5/c/2/5c29d825-61eb-4b16-8eb8-58367d0464d5/WM9Codecs9x.exe 8b76bdcbea0057eb12b7966edab4b942ddacc253
|
|
w_set_winver win2k
|
|
w_try $WINE "$W_CACHE"/WM9Codecs9x.exe $W_UNATTENDED_SLASH_Q
|
|
|
|
# Disable WMP's services, since they depend on unimplemented stuff, they trigger the GUI debugger several times
|
|
w_try_regedit /D "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdr4_2K"
|
|
w_try_regedit /D "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdralw2k"
|
|
|
|
w_unset_winver
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wenquanyi()
|
|
{
|
|
# See http://wenq.org/enindex.cgi
|
|
# Donate at http://wenq.org/enindex.cgi?Download(en)#MicroHei_Beta if you want to help support free CJK font development
|
|
w_download . $SOURCEFORGE/wqy/wqy-microhei-0.2.0-beta.tar.gz 28023041b22b6368bcfae076de68109b81e77976
|
|
cd "$W_TMP/"
|
|
gunzip -dc "$W_CACHE/wqy-microhei-0.2.0-beta.tar.gz" | tar -xf -
|
|
w_try mv wqy-microhei/wqy-microhei.ttc "$W_FONTSDIR_UNIX"
|
|
w_register_font wqy-microhei.ttc "WenQuanYi Micro Hei"
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wsh57()
|
|
{
|
|
if test -f "$W_SYSTEM32_DLLS"/scrrun.dll
|
|
then
|
|
echo "wsh57 already installed, skipping"
|
|
return
|
|
fi
|
|
|
|
# See also http://www.microsoft.com/downloads/details.aspx?FamilyID=47809025-D896-482E-A0D6-524E7E844D81&displaylang=en
|
|
w_download wsh57 http://download.microsoft.com/download/4/4/d/44de8a9e-630d-4c10-9f17-b9b34d3f6417/scripten.exe b15c6a834b7029e2dfed22127cf905b06857e6f5
|
|
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" "$W_CACHE"/wsh57/scripten.exe
|
|
|
|
# Wine doesn't provide the other dll's (yet?)
|
|
w_override_dlls native,builtin jscript wscript.exe
|
|
w_try_regsvr dispex.dll jscript.dll scrobj.dll scrrun.dll vbscript.dll wshcon.dll wshext.dll
|
|
|
|
# Needed to run vbscript
|
|
cat > "$W_TMP"/vbscript.reg <<_EOF_
|
|
REGEDIT4
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Classes\.vbs]
|
|
@="vbsfile"
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Classes\vbsfile]
|
|
@="VBScript Script File"
|
|
"FriendlyTypeName"=hex(2):40,25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,\
|
|
74,65,6d,33,32,5c,77,73,68,65,78,74,2e,64,6c,6c,2c,2d,34,38,30,32,00
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Classes\vbsfile\ScriptEngine]
|
|
@="VBScript"
|
|
|
|
[HKEY_LOCAL_MACHINE\Software\Classes\vbsfile\Shell\Open\Command]
|
|
@=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,32,5c,57,\
|
|
53,63,72,69,70,74,2e,65,78,65,20,22,25,31,22,20,25,2a,00
|
|
_EOF_
|
|
w_try_regedit "$W_TMP"/vbscript.reg
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wsh56js()
|
|
{
|
|
# This installs jscript 5.6 (but not vbscript)
|
|
# See also http://www.microsoft.com/downloads/details.aspx?FamilyID=16dd21a1-c4ee-4eca-8b80-7bd1dfefb4f8&DisplayLang=en
|
|
w_download . http://download.microsoft.com/download/b/c/3/bc3a0c36-fada-497d-a3de-8b0139766f3b/Windows2000-KB917344-56-x86-enu.exe add5f74c5bd4da6cfae47f8306de213ec6ed52c8
|
|
|
|
w_try $WINE "$W_CACHE"/Windows2000-KB917344-56-x86-enu.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_wsh56vb()
|
|
{
|
|
# This installs vbscript 5.6 (but not jscript)
|
|
# See also http://www.microsoft.com/downloads/details.aspx?familyid=4F728263-83A3-464B-BCC0-54E63714BC75
|
|
w_download . http://download.microsoft.com/download/IE60/Patch/Q318089/W9XNT4Me/EN-US/vbs56men.exe 48f14a93db33caff271da0c93f334971f9d7cb22
|
|
|
|
w_try $WINE "$W_CACHE"/vbs56men.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_xact()
|
|
{
|
|
helper_directx_dl ;
|
|
|
|
# xactengine?_?.dll, X3DAudio?_?.dll, xaudio?_?.dll, xapofx?_?.dll - extract
|
|
w_try_cabextract -d "$W_TMP" -L -F '*_xact_*x86*' "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_TMP" -L -F '*_x3daudio_*x86*' "$W_CACHE"/$DIRECTX_NAME
|
|
w_try_cabextract -d "$W_TMP" -L -F '*_xaudio_*x86*' "$W_CACHE"/$DIRECTX_NAME
|
|
for x in "$W_TMP"/*.cab
|
|
do
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F '*.dll' "$x"
|
|
done
|
|
|
|
# xactengine?_?.dll, xaudio?_?.dll - register
|
|
for x in "$W_SYSTEM32_DLLS"/xactengine* "$W_SYSTEM32_DLLS"/xaudio*
|
|
do
|
|
w_try_regsvr `basename "$x"`
|
|
done
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_xinput()
|
|
{
|
|
helper_directx_dl ;
|
|
|
|
# xinput1_1.dll xinput1_2.dll xinput1_3.dll xinput9_1_0.dll
|
|
w_try_cabextract -d "$W_TMP" -L -F '*_xinput_*x86*' "$W_CACHE"/$DIRECTX_NAME
|
|
for x in "$W_TMP"/*.cab
|
|
do
|
|
w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F '*.dll' "$x"
|
|
done
|
|
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_xmllite()
|
|
{
|
|
w_download xmllite http://download.microsoft.com/download/f/9/6/f964059a-3747-4ed8-9326-ba1e639031b1/WindowsXP-KB915865-v11-x86-ENU.exe 226d246a1c64e693791de5c727509002d089b0d5
|
|
|
|
# See http://bugs.winehq.org/show_bug.cgi?id=16013
|
|
# Find instructions to create this file in dlls/wintrust/tests/crypt.c
|
|
w_download xmllite http://winezeug.googlecode.com/svn/trunk/winetricks_files/winetest.cat ac8f50dd54d011f3bb1dd79240dae9378748449f
|
|
# Put a dummy catalog file in place
|
|
mkdir -p "$W_SYSTEM32_DLLS"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}
|
|
w_try cp -f "$W_CACHE"/xmllite/winetest.cat "$W_SYSTEM32_DLLS"/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}/oem0.cat
|
|
|
|
cd "$W_CACHE"/xmllite
|
|
w_override_dlls native xmllite
|
|
w_try $WINE WindowsXP-KB915865-v11-x86-ENU.exe $W_UNATTENDED_SLASH_Q
|
|
}
|
|
|
|
#----------------------------------------------------------------
|
|
|
|
load_xvid()
|
|
{
|
|
# xvid
|
|
load_vcrun6
|
|
w_download . http://www.koepi.info/Xvid-1.2.2-07062009.exe 435203e7f713c4484ca4f50f43e847f3dc118962
|
|
w_try $WINE "$W_CACHE"/Xvid-1.2.2-07062009.exe $W_UNATTENDED_SLASH_SILENT
|
|
}
|
|
|
|
#--------- Main program -----------------------------------------
|
|
|
|
# Call a verb, don't let it affect environment
|
|
# Supports just one argument at the moment
|
|
w_call()
|
|
{
|
|
rm -rf "$W_TMP"
|
|
mkdir -p "$W_TMP"
|
|
|
|
if ! ( load_$1 $2 )
|
|
then
|
|
w_die "$1 failed"
|
|
fi
|
|
|
|
(cd "$W_TMP" && rm -rf ./*)
|
|
}
|
|
|
|
report_usage()
|
|
{
|
|
# If and only if user has opted in to usage tracking, report the usage.
|
|
case "$W_TRACK_USAGE" in
|
|
1) ;;
|
|
*) return;;
|
|
esac
|
|
|
|
echo "You gave the --optin option, so reporting '$CMDLINE' to the winetricks maintainer so he knows which winetricks verbs get used and which don't. Use --optout to disable future reports."
|
|
|
|
# Just do a HEAD request with the raw commandline.
|
|
# Yes, this can be fooled by caches. That's ok.
|
|
if [ -x "`which wget 2>/dev/null`" ]
|
|
then
|
|
wget --spider "http://kegel.com/data/winetricks-usage?$VERSION-$CMDLINE" > /dev/null 2>&1 || true
|
|
elif [ -x "`which curl 2>/dev/null`" ]
|
|
then
|
|
curl -I "http://kegel.com/data/winetricks-usage?$VERSION-$CMDLINE" > /dev/null 2>&1 || true
|
|
fi
|
|
}
|
|
|
|
# On Solaris, choose more modern commands (needed for id -u).
|
|
case `uname -s` in
|
|
SunOS) PATH="/usr/xpg6/bin:/usr/xpg4/bin:$PATH"
|
|
;;
|
|
esac
|
|
|
|
detect_menu
|
|
detect_sudo
|
|
|
|
case $GUI in
|
|
1) showmenu ; set $todo ;;
|
|
esac
|
|
|
|
mkdir -p "$W_CACHE"
|
|
olddir=`pwd`
|
|
|
|
# The folder-name is localized!
|
|
W_PROGRAMS_WIN="`early_wine cmd.exe /c echo "%ProgramFiles%" | tr -d '\015'`"
|
|
test x"$W_PROGRAMS_WIN" != x || w_die "$WINE cmd.exe /c echo '%ProgramFiles%' returned empty string"
|
|
W_PROGRAMS_UNIX="`unset WINEDEBUG; $XXXPATH -u "$W_PROGRAMS_WIN" | tr -d '\015' `"
|
|
test x"$W_PROGRAMS_UNIX" != x || w_die "winepath -u $W_PROGRAMS_WIN returned empty string"
|
|
|
|
# 64 bit windows has a second directory for program files
|
|
W_PROGRAMS_X86_WIN="${W_PROGRAMS_WIN} (x86)"
|
|
W_PROGRAMS_X86_UNIX="${W_PROGRAMS_UNIX} (x86)"
|
|
if ! test -d "$W_PROGRAMS_X86_UNIX"
|
|
then
|
|
W_PROGRAMS_X86_WIN="${W_PROGRAMS_WIN}"
|
|
W_PROGRAMS_X86_UNIX="${W_PROGRAMS_UNIX}"
|
|
fi
|
|
|
|
# localized, and different across Windows versions:
|
|
appdata_win="`unset WINEDEBUG; WINEDLLOVERRIDES=mshtml= $WINE cmd.exe /c echo "%AppData%" | tr -d '\015'`"
|
|
appdata_unix="`unset WINEDEBUG; $XXXPATH -u "$appdata_win" | tr -d '\015' `"
|
|
|
|
# (Fixme: get fonts path from SHGetFolderPath
|
|
# See also http://blogs.msdn.com/oldnewthing/archive/2003/11/03/55532.aspx)
|
|
#
|
|
# Did the user rename Fonts to fonts?
|
|
if test ! -d "$W_WINDIR_UNIX"/Fonts && test -d "$W_WINDIR_UNIX"/fonts
|
|
then
|
|
W_FONTSDIR_UNIX="$W_WINDIR_UNIX"/fonts
|
|
else
|
|
W_FONTSDIR_UNIX="$W_WINDIR_UNIX"/Fonts
|
|
fi
|
|
mkdir -p "${W_FONTSDIR_UNIX}"
|
|
|
|
# Mac folks tend to not have sha1sum, but we can make do with openssl
|
|
if [ -x "`which sha1sum 2>/dev/null`" ]
|
|
then
|
|
SHA1SUM="sha1sum"
|
|
elif [ -x "`which openssl 2>/dev/null`" ]
|
|
then
|
|
SHA1SUM="openssl dgst -sha1"
|
|
else
|
|
w_die "No sha1sum utility available."
|
|
fi
|
|
|
|
# Warn the user if on win(e)64, since a lot of winetricks is broken for it
|
|
if [ "$W_ARCH" = "win64" ]
|
|
then
|
|
w_warn "You're using a 64-bit WINEPREFIX, most of winetricks has been fixed for 64-bit, but you may still have problems. You can force a 32-bit WINEPREFIX by using WINEARCH=win32."
|
|
fi
|
|
|
|
# Load opt-in status
|
|
if test -f $W_CACHE/track_usage
|
|
then
|
|
W_TRACK_USAGE=`cat $W_CACHE/track_usage`
|
|
else
|
|
# No opt-in status found. If GUI active, ask user whether they would like to opt in.
|
|
case $GUI-$MENU in
|
|
1-zenity)
|
|
case $LANG in
|
|
*)
|
|
title="One-time question about helping Winetricks development"
|
|
question="Would you like to help winetricks development by letting winetricks report statistics? You can turn reporting off at any time with the command 'winetricks --optout' or by removing the file $W_CACHE/track_usage"
|
|
thanks='Thanks! You won'\''t be asked this question again.'
|
|
declined="OK, winetricks will *not* report statistics. You won't be asked this question again."
|
|
;;
|
|
esac
|
|
if zenity --question --text "$question" --title "$title"
|
|
then
|
|
zenity --info --text "$thanks"
|
|
W_TRACK_USAGE=1
|
|
else
|
|
zenity --info --text "$declined"
|
|
W_TRACK_USAGE=0
|
|
fi
|
|
echo $W_TRACK_USAGE > $W_CACHE/track_usage
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
CMDLINE="$*"
|
|
while test "$1" != ""
|
|
do
|
|
W_PACKAGE=$1
|
|
case $1 in
|
|
-q) W_UNATTENDED_SLASH_Q="/q"
|
|
W_UNATTENDED_SLASH_Q_T="/qt" # Microsoft Control Pad
|
|
W_UNATTENDED_DASH_Q="-q"
|
|
W_UNATTENDED_SLASH_SILENT="/silent"
|
|
W_UNATTENDED_DASH_SILENT="-silent"
|
|
W_UNATTENDED_SLASH_S="/S" # for NSIS installers
|
|
WINEDEBUG=${WINEDEBUG:-"fixme-all"}
|
|
export WINEDEBUG
|
|
;;
|
|
-v) set -x;;
|
|
--optin) W_TRACK_USAGE=1; echo $W_TRACK_USAGE > $W_CACHE/track_usage;;
|
|
--optout) W_TRACK_USAGE=0; echo $W_TRACK_USAGE > $W_CACHE/track_usage;;
|
|
7zip|7-zip) w_call 7zip;;
|
|
abiword) w_call abiword;;
|
|
adobeair) w_call adobeair;;
|
|
amstream) w_call amstream;;
|
|
l3codecx) w_call l3codecx;;
|
|
art2kmin|art2k7min) w_call art2kmin;;
|
|
atmlib) w_call atmlib;;
|
|
autohotkey|ahk) w_call autohotkey;;
|
|
baekmuk) w_call baekmuk;;
|
|
cmake) w_call cmake;;
|
|
comctl32.ocx) w_call comctl32ocx;;
|
|
comctl32|cc580) w_call comctl32;;
|
|
comdlg32.ocx) w_call comdlg32ocx;;
|
|
colorprofile) w_call colorprofile;;
|
|
controlpad|fm20) w_call controlpad;;
|
|
corefonts) w_call corefonts;;
|
|
crypt32) w_call crypt32;;
|
|
cygwin) w_call cygwin;;
|
|
d3dx9) w_call d3dx9;;
|
|
d3dx9_26) w_call d3dx9_xx 26;;
|
|
d3dx9_28) w_call d3dx9_xx 28;;
|
|
d3dx9_31) w_call d3dx9_xx 31;;
|
|
d3dx9_35) w_call d3dx9_xx 35;;
|
|
d3dx9_36) w_call d3dx9_xx 36;;
|
|
d3dx9_42) w_call d3dx9_xx 42;;
|
|
d3dx10) w_call d3dx10;;
|
|
d3dxof) w_call d3dxof;;
|
|
dcom98) w_call dcom98;;
|
|
devenum) w_call devenum;;
|
|
dinput8) w_call dinput8;;
|
|
dirac) w_call dirac;;
|
|
directmusic) w_call directmusic;;
|
|
directplay|dxplay|dplay) w_call directplay;;
|
|
directx9) DIRECTX_WINDOWS=win2k ; w_call directx9;;
|
|
directx9-beta) DIRECTX_WINDOWS=winxp ; w_call directx9 ; w_call directmusic ; w_call directplay ;;
|
|
divx) w_call divx;;
|
|
dotnet1|dotnet11) w_call dotnet11; w_call fontfix;;
|
|
dotnet11sdk) w_call dotnet11sdk;;
|
|
dotnet20) w_call dotnet20;;
|
|
dotnet20sdk) w_call dotnet20sdk;;
|
|
dotnet20sp2) w_call dotnet20sp2;;
|
|
dotnet3|dotnet30) w_call dotnet30; w_call fontfix;;
|
|
dotnet35) w_call dotnet35; w_call fontfix;;
|
|
dmsynth) w_call dmsynth;;
|
|
droid) w_call droid;;
|
|
dsound) w_call dsound;;
|
|
dxsdk_nov2006) w_call dxsdk_nov2006;;
|
|
eufonts) w_call eufonts;;
|
|
fakechinese) w_call fakechinese;;
|
|
fakejapanese) w_call fakejapanese;;
|
|
fakekorean) w_call fakekorean;;
|
|
ffdshow) w_call ffdshow;;
|
|
firefox|firefox3) w_call firefox;;
|
|
flash) w_call flash;;
|
|
fontfix) w_call fontfix;;
|
|
fontsmooth-bgr|fs-bgr) w_call fs_bgr;;
|
|
fontsmooth-disable|fs-disable) w_call fs_disable;;
|
|
fontsmooth-gray|fontsmooth-grayscale|fontsmooth-enable|fs-enable) w_call fs_grayscale;;
|
|
fontsmooth-rgb|fs-rgb|fs-cleartype) w_call fs_rgb;;
|
|
gdiplus) w_call gdiplus;;
|
|
gecko) w_call gecko;;
|
|
gecko-dbg|geckodbg|gecko_dbg|geckodebug|gecko_debug|gecko-debug) w_call gecko_dbg;;
|
|
gfw|xlive) w_call gfw;;
|
|
glsl-disable) w_call glsl_disable;;
|
|
glsl-enable) w_call glsl_enable;;
|
|
glut) w_call glut;;
|
|
hosts) w_call hosts;;
|
|
icodecs) w_call icodecs;;
|
|
ie6|ie6_full) w_call ie6;;
|
|
ie7) w_call ie7;;
|
|
ie8) w_call ie8;;
|
|
jet40) w_call jet40;;
|
|
kde) w_call kde;;
|
|
liberation) w_call liberation;;
|
|
lucida) w_call lucida;;
|
|
mdac25) w_call mdac25;;
|
|
mdac26|mdac27) w_call mdac27;;
|
|
mdac28) w_call mdac28;;
|
|
mfc40) w_call mfc40;;
|
|
mingw|mingw-min|mingw_min) w_call mingw_min;;
|
|
mingw-gdb|mingw_gdb) w_call mingw_gdb;;
|
|
mono26) w_call mono26;;
|
|
mono28) w_call mono28;;
|
|
mozillabuild) w_call mozillabuild;;
|
|
mpc) w_call mpc;;
|
|
msasn1) w_call msasn1;;
|
|
msi2) w_call msi2;;
|
|
mshflxgd) w_call mshflxgd;;
|
|
msls31) w_call msls31;;
|
|
msmask) w_call msmask;;
|
|
mspaint|paint) w_call mspaint;;
|
|
msscript) w_call msscript;;
|
|
msxml3) w_call msxml3;;
|
|
msxml4) w_call msxml4;;
|
|
msxml6) w_call msxml6;;
|
|
nvidiasdk95) w_call nvidiasdk95;;
|
|
ogg) w_call ogg;;
|
|
ole2) w_call ole2;;
|
|
opensymbol) w_call opensymbol;;
|
|
openwatcom|watcom) w_call openwatcom;;
|
|
pdh) w_call pdh;;
|
|
physx) w_call physx;;
|
|
psdk2003) w_call psdk2003;;
|
|
psdkvista) w_call psdkvista;;
|
|
psdkwin7) w_call psdkwin7;;
|
|
python|python26) w_call python26;;
|
|
python-comtypes|pythoncom|python-com|pythoncomtypes) w_call python_comtypes;;
|
|
quartz) w_call quartz;;
|
|
quicktime72) w_call quicktime72;;
|
|
quicktime76) w_call quicktime76;;
|
|
riched20) w_call riched20;;
|
|
riched30) w_call riched30;;
|
|
richtx32) w_call richtx32;;
|
|
safari) w_call safari;;
|
|
secur32) w_call secur32;;
|
|
shockwave) w_call shockwave;;
|
|
steam) w_call steam;;
|
|
tahoma) w_call tahoma;;
|
|
takao) w_call takao;;
|
|
unifont) w_call unifont;;
|
|
usp10) w_call usp10;;
|
|
utorrent) w_call utorrent;;
|
|
vbrun200|vb2run) w_call vb2run;;
|
|
vbrun300|vb3run) w_call vb3run;;
|
|
vbrun400|vb4run) w_call vb4run;;
|
|
vbrun500|vbvm50|vb5run) w_call vbvm50;;
|
|
vbrun600|vbrun60|vb6run) w_call vbrun60;;
|
|
vc2003toolkit) w_call vc2003toolkit;;
|
|
vc2005express) w_call vc2005express;;
|
|
vc2005expresssp1) w_call vc2005expresssp1;;
|
|
vc2005hotfix) w_call vc2005hotfix;;
|
|
vc2005load) w_call vc2005_tarball;;
|
|
vc2005save) save_vc2005_tarball;;
|
|
vc2005sp1) w_call vc2005sp1;;
|
|
vc2008sp1) w_call vc2008sp1;;
|
|
vc2005trial) w_call vc2005trial;;
|
|
vc2008trial) w_call vc2008trial;;
|
|
vcrun600|vcrun60|vcrun6|mfc42) w_call vcrun6;;
|
|
vcrun60sp6|vcrun6sp6) w_call vcrun6sp6;;
|
|
vcrun2003) w_call vcrun2003;;
|
|
vcrun2005|vcrun2005sp1) w_call vcrun2005;;
|
|
vcrun2008|vcrun2008sp1) w_call vcrun2008;;
|
|
vcrun2010) w_call vcrun2010;;
|
|
vjrun20) w_call vjrun20;;
|
|
vlc) w_call vlc;;
|
|
wenquanyi) w_call wenquanyi;;
|
|
windowscodecs|wic) w_call windowscodecs;;
|
|
winhttp) w_call winhttp;;
|
|
wininet) w_call wininet;;
|
|
wme9) w_call wme9;;
|
|
wmi|wbem) w_call wmi;;
|
|
wmp9) w_call wmp9;;
|
|
wmp10) w_call wmp10;;
|
|
wsh56|wsh57) w_call wsh57;;
|
|
jscript|wsh56js) w_call wsh56js;;
|
|
wsh56vb) w_call wsh56vb;;
|
|
xact|xactengine|x3daudio|xapofx) w_call xact;;
|
|
xinput) w_call xinput;;
|
|
xmllite) w_call xmllite;;
|
|
xvid) w_call xvid;;
|
|
|
|
allcodecs|allvcodecs) w_call vcrun6; w_call ffdshow; w_call xvid; w_call icodecs;;
|
|
allfonts) w_call corefonts; w_call droid; w_call eufonts; w_call liberation; w_call lucida; w_call opensymbol; w_call tahoma; w_call fakechinese; w_call fakejapanese; w_call fakekorean; w_call unifont;;
|
|
alldlls=builtin) override_all_dlls;;
|
|
alldlls=default) override_no_dlls;;
|
|
cjkfonts) w_call fakechinese; w_call fakejapanese; w_call fakekorean; w_call unifont;;
|
|
ddr=gdi) set_ddr gdi;;
|
|
ddr=opengl) set_ddr opengl;;
|
|
dsoundbug9612) w_call dsoundbug9612;;
|
|
forcemono|force_mono) w_call forcemono;;
|
|
heapcheck) set_heapcheck;;
|
|
mmdevapi=builtin) set_mmdevapi builtin ;;
|
|
mmdevapi=native) set_mmdevapi native ;;
|
|
mmdevapi=disabled) set_mmdevapi disabled ;;
|
|
multisampling=enabled|multisampling=on) set_multisampling enabled;;
|
|
multisampling=disabled|multisampling=off) set_multisampling disabled;;
|
|
native_mdac) set_native_mdac;;
|
|
native_oleaut32) w_override_dlls native,builtin oleaut32;;
|
|
nocrashdialog) disable_crashdialog;;
|
|
orm=backbuffer|backbuffer) set_orm backbuffer;;
|
|
orm=fbo|fbo) set_orm fbo;;
|
|
rtlm=auto) set_rtlm auto;;
|
|
rtlm=disabled) set_rtlm disabled;;
|
|
rtlm=readdraw) set_rtlm readdraw;;
|
|
rtlm=readtex) set_rtlm readtex;;
|
|
rtlm=texdraw) set_rtlm texdraw;;
|
|
rtlm=textex) set_rtlm textex;;
|
|
sandbox) sandbox;;
|
|
sound=alsa|alsa) set_sound_driver alsa;;
|
|
sound=coreaudio|coreaudio) set_sound_driver coreaudio;;
|
|
sound=esound|sound=esd|esd|esound) set_sound_driver esd;;
|
|
sound=jack|jack) set_sound_driver jack;;
|
|
sound=nas|nas) set_sound_driver nas;;
|
|
sound=oss|oss) set_sound_driver oss;;
|
|
sound=disabled|sound=) set_sound_driver "";;
|
|
strictdrawordering=enabled) set_sdo enabled;;
|
|
strictdrawordering=disabled) set_sdo disabled;;
|
|
videomemorysize=512) set_videomemorysize 512;;
|
|
videomemorysize=1024) set_videomemorysize 1024;;
|
|
videomemorysize=default) set_videomemorysize default;;
|
|
volnum) volnum;;
|
|
mwo=force)set_mwo force;;
|
|
mwo=disable|mwo=disabled) set_mwo disable;;
|
|
mwo=enabled) set_mwo enabled;;
|
|
npm-repack) npm_repack;;
|
|
psm=on) set_psm enabled;;
|
|
psm=off) set_psm disabled;;
|
|
vd=*) arg=`echo $W_PACKAGE | sed 's/vd=//'`; set_virtualdesktop $arg ;;
|
|
vsm-hard) set_vsm hardware;;
|
|
winver=win31|win31) w_set_winver win31;;
|
|
winver=win98|win98) w_set_winver win98;;
|
|
winver=nt40|nt40) w_set_winver nt40;;
|
|
winver=win2k|win2k) w_set_winver win2k;;
|
|
winver=win7|win7) w_set_winver win7;;
|
|
winver=winxp|winxp) w_set_winver winxp;;
|
|
winver=vista|vista) w_set_winver vista;;
|
|
winver=) w_unset_winver;;
|
|
*=disabled) arg=`echo $W_PACKAGE | sed 's/=.*//'`; w_override_dlls disabled $arg ;;
|
|
*) echo Unknown arg $1; usage ; exit 1;;
|
|
esac
|
|
# Provide a bit of feedback
|
|
test "$W_UNATTENDED_SLASH_Q" = "" && case $1 in
|
|
-q) echo Setting quiet mode;;
|
|
-v) echo Setting verbose mode;;
|
|
*) echo "Install of $1 done" ;;
|
|
esac
|
|
shift
|
|
# cleanup
|
|
(cd "$W_TMP" && rm -rf ./*)
|
|
done
|
|
|
|
report_usage "$CMDLINE"
|
|
|
|
rmdir "$W_TMP"
|
|
|
|
test "$WINETRICKS_CACHE_SYMLINK" && rm -f "$WINETRICKS_CACHE_SYMLINK"
|
|
test "$W_UNATTENDED_SLASH_Q" = "" && echo winetricks done. || true
|