summaryrefslogtreecommitdiffstats
path: root/tools/valgrind
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-08 21:56:42 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-08 21:56:42 +0000
commit26788a65a7f9094a0acd44ea69c3cdbea5b1f498 (patch)
tree86157cd8ec540bf1d7a606df77f46abbbef86121 /tools/valgrind
parent0d5a3df2a5d0b89305bbad7c0efe8532e1cccb40 (diff)
downloadchromium_src-26788a65a7f9094a0acd44ea69c3cdbea5b1f498.zip
chromium_src-26788a65a7f9094a0acd44ea69c3cdbea5b1f498.tar.gz
chromium_src-26788a65a7f9094a0acd44ea69c3cdbea5b1f498.tar.bz2
wine_valgrind: Use common Valgrind scripts to run Wine/Valgrind tests.
Use test and valgrind suppressions from the same locations as the other valgrind bots. BUG=none TEST=none Review URL: http://codereview.chromium.org/561045 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38399 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/valgrind')
-rwxr-xr-xtools/valgrind/chrome_tests.py23
-rwxr-xr-xtools/valgrind/common.py19
-rwxr-xr-xtools/valgrind/valgrind_test.py75
-rw-r--r--tools/valgrind/wine_memcheck/suppressions.txt543
-rw-r--r--tools/valgrind/wine_memcheck/winetricks3548
5 files changed, 4184 insertions, 24 deletions
diff --git a/tools/valgrind/chrome_tests.py b/tools/valgrind/chrome_tests.py
index b62fdf7..c94aa77 100755
--- a/tools/valgrind/chrome_tests.py
+++ b/tools/valgrind/chrome_tests.py
@@ -124,15 +124,19 @@ class ChromeTests:
self._data_dirs.append(os.path.join(module_dir, "data", "valgrind"))
if not self._options.build_dir:
- dirs = [
- os.path.join(self._source_dir, "xcodebuild", "Debug"),
- os.path.join(self._source_dir, "sconsbuild", "Debug"),
- os.path.join(self._source_dir, "out", "Debug"),
- ]
- if exe:
- self._options.build_dir = FindDirContainingNewestFile(dirs, exe)
+ if common.IsWine():
+ self._options.build_dir = os.path.join(
+ self._source_dir, "chrome", "Debug")
else:
- self._options.build_dir = FindNewestDir(dirs)
+ dirs = [
+ os.path.join(self._source_dir, "xcodebuild", "Debug"),
+ os.path.join(self._source_dir, "sconsbuild", "Debug"),
+ os.path.join(self._source_dir, "out", "Debug"),
+ ]
+ if exe:
+ self._options.build_dir = FindDirContainingNewestFile(dirs, exe)
+ else:
+ self._options.build_dir = FindNewestDir(dirs)
cmd = list(self._command_preamble)
for directory in self._data_dirs:
@@ -156,6 +160,9 @@ class ChromeTests:
for arg in valgrind_test_args:
cmd.append(arg)
if exe:
+ if common.IsWine():
+ cmd.append(os.environ.get('WINE'))
+ exe = exe + '.exe'
cmd.append(os.path.join(self._options.build_dir, exe))
# Valgrind runs tests slowly, so slow tests hurt more; show elapased time
# so we can find the slowpokes.
diff --git a/tools/valgrind/common.py b/tools/valgrind/common.py
index 8f85d40..52af411 100755
--- a/tools/valgrind/common.py
+++ b/tools/valgrind/common.py
@@ -27,7 +27,13 @@ def _print_line(line, flush=True):
sys.stdout.flush()
-def RunSubprocess(proc, timeout=0, detach=False):
+def RunSubprocessInBackground(proc):
+ """Runs a subprocess in the background. Returns a handle to the process."""
+ logging.info("running %s in the background" % " ".join(proc))
+ return subprocess.Popen(proc)
+
+
+def RunSubprocess(proc, timeout=0, detach=False, background=False):
""" Runs a subprocess, until it finishes or |timeout| is exceeded and the
process is killed with taskkill. A |timeout| <= 0 means no timeout.
@@ -128,8 +134,19 @@ def IsWindows():
return sys.platform == 'cygwin' or sys.platform.startswith('win')
+def IsWine():
+ """This needs to be set by the script that starts the buildbot, i.e.
+ /etc/init.d/buildbot, or manually on the command line."""
+ return (os.environ.get('WINE') and
+ os.environ.get('WINEPREFIX') and
+ os.environ.get('WINESERVER'))
+
+
def PlatformName():
"""Return a string to be used in paths for the platform."""
+ # This has to be before IsLinux()
+ if IsWine():
+ return 'wine'
if IsLinux():
return 'linux'
if IsMac():
diff --git a/tools/valgrind/valgrind_test.py b/tools/valgrind/valgrind_test.py
index c5986e6..0a736a1 100755
--- a/tools/valgrind/valgrind_test.py
+++ b/tools/valgrind/valgrind_test.py
@@ -19,6 +19,7 @@ import shutil
import stat
import sys
import tempfile
+import time
import common
@@ -128,7 +129,7 @@ class ValgrindTool(object):
if self._options.gtest_repeat:
self._args.append("--gtest_repeat=%s" % self._options.gtest_repeat)
if self._options.gtest_print_time:
- self._args.append("--gtest_print_time");
+ self._args.append("--gtest_print_time")
return True
@@ -136,6 +137,12 @@ class ValgrindTool(object):
return self.ParseArgv(args)
def PrepareForTest(self):
+ if common.IsWine():
+ self.PrepareForTestWine()
+ elif common.IsMac():
+ self.PrepareForTestMac()
+
+ def PrepareForTestMac(self):
"""Runs dsymutil if needed.
Valgrind for Mac OS X requires that debugging information be in a .dSYM
@@ -149,9 +156,6 @@ class ValgrindTool(object):
it looks like a fake_dsym. A non-fake dsym that already exists is assumed
to be up-to-date.
"""
- if not common.IsMac():
- return
-
test_command = self._args[0]
dsym_bundle = self._args[0] + '.dSYM'
dsym_file = os.path.join(dsym_bundle, 'Contents', 'Resources', 'DWARF',
@@ -201,6 +205,39 @@ class ValgrindTool(object):
"not be shown. Either tell xcode to generate .dSYM "
"file, or use --generate_dsym option to this tool.")
+ def PrepareForTestWine(self):
+ """Set up the Wine environment.
+
+ We need to run some sanity checks, set up a Wine prefix, and make sure
+ wineserver is running by starting a dummy win32 program.
+ """
+ if not os.path.exists('/usr/share/ca-certificates/root_ca_cert.crt'):
+ logging.warning('WARNING: SSL certificate missing! SSL tests will fail.')
+ logging.warning('You need to run:')
+ logging.warning('sudo cp src/net/data/ssl/certificates/root_ca_cert.crt '
+ '/usr/share/ca-certificates/')
+ logging.warning('sudo vi /etc/ca-certificates.conf')
+ logging.warning(' (and add the line root_ca_cert.crt)')
+ logging.warning('sudo update-ca-certificates')
+
+ # Shutdown the Wine server in case the last run got interrupted.
+ common.RunSubprocess([os.environ.get('WINESERVER'), '-k'])
+
+ # Yes, this can be dangerous if $WINEPREFIX is set incorrectly.
+ shutil.rmtree(os.environ.get('WINEPREFIX'), ignore_errors=True)
+
+ winetricks = os.path.join(self._source_dir, 'tools', 'valgrind',
+ 'wine_memcheck', 'winetricks')
+ common.RunSubprocess(['sh', winetricks,
+ 'nocrashdialog', 'corefonts', 'gecko'])
+ time.sleep(1)
+
+ # Start a dummy program like winemine so Valgrind won't run memcheck on
+ # the wineserver startup routine when it launches the test binary, which
+ # is slow and not interesting to us.
+ common.RunSubprocessInBackground([os.environ.get('WINE'), 'winemine'])
+ return
+
def ValgrindCommand(self):
"""Get the valgrind command to run."""
# Note that self._args begins with the exe to be run.
@@ -212,7 +249,7 @@ class ValgrindTool(object):
"--num-callers=%i" % self._num_callers]
if self._options.trace_children:
- proc += ["--trace-children=yes"];
+ proc += ["--trace-children=yes"]
proc += self.ToolSpecificFlags()
proc += self._tool_flags
@@ -254,11 +291,15 @@ class ValgrindTool(object):
proc = self.ValgrindCommand()
os.putenv("G_SLICE", "always-malloc")
- logging.info("export G_SLICE=always-malloc");
+ logging.info("export G_SLICE=always-malloc")
os.putenv("NSS_DISABLE_ARENA_FREE_LIST", "1")
- logging.info("export NSS_DISABLE_ARENA_FREE_LIST=1");
+ logging.info("export NSS_DISABLE_ARENA_FREE_LIST=1")
os.putenv("GTEST_DEATH_TEST_USE_FORK", "1")
- logging.info("export GTEST_DEATH_TEST_USE_FORK=1");
+ logging.info("export GTEST_DEATH_TEST_USE_FORK=1")
+
+ if common.IsWine():
+ os.putenv("CHROME_ALLOCATOR", "winheap")
+ logging.info("export CHROME_ALLOCATOR=winheap")
return common.RunSubprocess(proc, self._timeout)
@@ -271,6 +312,10 @@ class ValgrindTool(object):
# cleanup is still a TODO?
if not self._nocleanup_on_exit:
shutil.rmtree(self.TMP_DIR, ignore_errors=True)
+
+ if common.IsWine():
+ # Shutdown the Wine server.
+ common.RunSubprocess([os.environ.get('WINESERVER'), '-k'])
return True
def RunTestsAndAnalyze(self):
@@ -297,14 +342,14 @@ class ValgrindTool(object):
with a magic wrapper. Build the magic wrapper here.
"""
(fd, indirect_fname) = tempfile.mkstemp(dir=self.TMP_DIR, prefix="browser_wrapper.", text=True)
- f = os.fdopen(fd, "w");
+ f = os.fdopen(fd, "w")
f.write("#!/bin/sh\n")
f.write(command)
f.write(' "$@"\n')
f.close()
os.chmod(indirect_fname, stat.S_IRUSR|stat.S_IXUSR)
os.putenv("BROWSER_WRAPPER", indirect_fname)
- logging.info('export BROWSER_WRAPPER=' + indirect_fname);
+ logging.info('export BROWSER_WRAPPER=' + indirect_fname)
def Main(self, args):
'''Call this to run through the whole process: Setup, Execute, Analyze'''
@@ -350,12 +395,12 @@ class Memcheck(ValgrindTool):
ret = ["--leak-check=full", "--gen-suppressions=all", "--demangle=no"]
if self._options.show_all_leaks:
- ret += ["--show-reachable=yes"];
+ ret += ["--show-reachable=yes"]
else:
- ret += ["--show-possible=no"];
+ ret += ["--show-possible=no"]
if self._options.track_origins:
- ret += ["--track-origins=yes"];
+ ret += ["--track-origins=yes"]
return ret
@@ -454,9 +499,9 @@ class ThreadSanitizer(ValgrindTool):
class ToolFactory:
def Create(self, tool_name):
- if tool_name == "memcheck":
+ if tool_name == "memcheck" and not common.IsWine():
return Memcheck()
- if tool_name == "memcheck_wine":
+ if tool_name == "wine_memcheck" and common.IsWine():
return Memcheck()
if tool_name == "tsan":
if not common.IsLinux():
diff --git a/tools/valgrind/wine_memcheck/suppressions.txt b/tools/valgrind/wine_memcheck/suppressions.txt
new file mode 100644
index 0000000..4c5e85b
--- /dev/null
+++ b/tools/valgrind/wine_memcheck/suppressions.txt
@@ -0,0 +1,543 @@
+# There are four kinds of suppressions in this file.
+#
+# 1. Third party stuff we have no control over.
+#
+# 2. Bugs involving Wine.
+#
+# 3. Chromium specific errors that are intentional unit test errors,
+# or stuff that is somehow a false positive in our own code,
+# or stuff that is so trivial it's not worth fixing.
+#
+# 4. Suppressions for real chromium bugs that are not yet fixed.
+# These should all be in chromium's bug tracking system (but a few aren't yet).
+# Periodically we should sweep this file and the bug tracker clean by
+# running overnight and removing outdated bugs/suppressions.
+#-----------------------------------------------------------------------
+
+# 1. Third party stuff we have no control over.
+
+# System bugs that aren't Wine's fault.
+{
+ suppress_nss_leak
+ Memcheck:Leak
+ fun:malloc
+ obj:*
+ fun:__nss_database_lookup
+}
+{
+ bogus_Xcursor_Leak
+ Memcheck:Leak
+ fun:malloc
+ obj:/usr/lib/libXcursor.so.1.0.2
+}
+{
+ todo_suppress_libasound_leak
+ Memcheck:Leak
+ ...
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ todo_suppress_libfontconfig_leak
+ Memcheck:Leak
+ fun:malloc
+ obj:/usr/lib*/libfontconfig.so.1.*
+}
+# visual C++
+{
+ todo_visual_c_chkstk_2
+ Memcheck:Addr4
+ fun:_chkstk
+}
+{
+ # Same leak exists in src/tools/valgrind/memcheck/suppressions.txt
+ # with a mangled stack signature.
+ Uninitialized value in deflate
+ Memcheck:Cond
+ ...
+ fun:MOZ_Z_deflate
+}
+
+# 2. Bugs involving Wine
+
+# These three happen if valgrind doesn't notice and handle speculative
+# implementations of strchr/strlen/strcat properly.
+{
+ visual_c_ignore_strchr
+ Memcheck:Cond
+ fun:strchr
+}
+{
+ visual_c_ignore_strlen
+ Memcheck:Cond
+ fun:strlen
+}
+{
+ visual_c_ignore_strcat
+ Memcheck:Cond
+ fun:strcat
+}
+
+# Naming convention for Wine suppressions:
+# # If we think it's solid:
+# # suppress_wine_dirname__functionname[_moreifneeded]
+# # If we aren't sure, change suppress to todo
+
+# thread_detach() should clean this up??
+{
+ todo_wine_dlls_winex11drv__x11drv_init_thread_data_main
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:x11drv_init_thread_data
+}
+{
+ todo_wine_dlls_winex11drv_XOpenDisplay
+ Memcheck:Leak
+ fun:malloc
+ ...
+ fun:xcb_connect
+ fun:_XConnectXCB
+ fun:XOpenDisplay
+}
+{
+ todo_wine_dlls_winex11drv_XOpenDisplay_2
+ Memcheck:Leak
+ fun:malloc
+ ...
+ fun:xcb_get_extension_data
+ fun:xcb_prefetch_maximum_request_length
+ fun:xcb_get_maximum_request_length
+ fun:XOpenDisplay
+ fun:DllMain
+}
+{
+ todo_suppress_alloc_module_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:RtlCreateUnicodeString
+ fun:alloc_module
+}
+{
+ todo_suppress_dlopen_leak2
+ Memcheck:Leak
+ fun:*alloc
+ ...
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+}
+# ntdll/loader.c explicitly avoids freeing when .exe's exit at the moment
+{
+ todo_suppress_wine_alloc_module_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:RtlCreateUnicodeString
+ fun:alloc_module
+}
+# shell32 isn't freeing its imagelist cache on unload?
+{
+ wine_bug_20544
+ Memcheck:Leak
+ fun:malloc
+ fun:XInitExtension
+ fun:XextAddDisplay
+ fun:*
+ fun:XShmQueryVersion
+ fun:X11DRV_CreateDIBSection
+ fun:CreateDIBSection
+ fun:ImageList_CreateImage
+ fun:ImageList_Create
+ fun:SIC_Initialize
+ fun:DllMain
+}
+# winmm isn't freeing everything on unload?
+{
+ wine_bug_20545
+ Memcheck:Leak
+ ...
+ fun:Rtl*AllocateHeap
+ fun:MMDRV_InitPerType
+ fun:MMDRV_Install
+ fun:MMDRV_Init
+}
+# yet another leak on unload, seen on chromium's net http and ftp tests
+{
+ wine_bug_20549
+ Memcheck:Leak
+ fun:malloc
+ ...
+ fun:SECUR32_initSchannelSP
+}
+{
+ # yet another gnutls leak?
+ gnutls_leak_bug_2
+ Memcheck:Leak
+ fun:calloc
+ ...
+# fun:_gnutls_hash_init (commented out because sometimes this shows up without symbols)
+# fun:gnutls_handshake
+ fun:schan_InitializeSecurityContextW
+ fun:InitializeSecurityContextW
+}
+# leak on thread creation?
+{
+ wine_bug_20552
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:alloc_thread_tls
+ fun:MODULE_DllThreadAttach
+}
+{
+ wine_secur32_ignore_fork_helper_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:fork_helper
+ fun:SECUR32_initNTLMSP
+}
+{
+ wine_bug_20548_ReadFile
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:NtReadFile
+}
+{
+ wine_bug_20548_WS_shutdown
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:WS2_register_async_shutdown
+ fun:WS_shutdown
+}
+{
+ wine_bug_20654
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:get_full_path_helper
+ fun:RtlGetFullPathName_U
+}
+{
+ # This leak is expected - wine doesn't have a reliable way to free the default provider on exit.
+ wine_bug_20679
+ Memcheck:Leak
+ ...
+ fun:CRYPT_GetDefaultProvider
+}
+{
+ # Benign window title leak?
+ wine_bug_20692_wontfix
+ Memcheck:Leak
+ ...
+ fun:DEFWND_SetText*
+ ...
+ fun:CreateWindow*
+}
+{
+ wine_bug_21045
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ fun:SECUR32_addPackages
+ fun:SECUR32_initNegotiateSP
+}
+
+# 3. Chromium specific errors that are intentional unit test errors,
+# or stuff that is somehow a false positive in our own code,
+# or stuff that is so trivial it's not worth fixing.
+
+{
+ wine_bug_20551_as_seen_by_chromium
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ ...
+ fun:GlobalAlloc
+ ...
+ fun:Clipboard::WriteObjects
+}
+{
+ suppress_chromium_crasher
+ Memcheck:Addr1
+ ...
+ fun:*Test_Crasher*
+}
+{
+ ignore_mozilla_errors
+ Memcheck:Cond
+ obj:*/ImporterTest/profile/mozcrt19.dll
+}
+{
+ ignore_mozilla_errors2
+ Memcheck:Cond
+ obj:*/chrome/test/data/firefox3_nss/mozcrt19.dll
+}
+{
+ ignore_gears_errors
+ Memcheck:Addr4
+ obj:*/gears.dll
+}
+{
+ ignore_nss_decryptor_init_errors
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ ...
+ fun:NSSDecryptor::Init
+}
+# Not sure why Valgrind started to think everything happening in the
+# usr1_handler is invalid. Can't seem to reproduce these locally.
+# This happens in URLFetcherTest.SameThreadsTest.
+{
+ ignore_wine_ntdll_usr1_handler_a
+ Memcheck:Addr1
+ ...
+ fun:usr1_handler
+}
+{
+ ignore_wine_ntdll_usr1_handler_b
+ Memcheck:Addr2
+ ...
+ fun:usr1_handler
+}
+{
+ ignore_wine_ntdll_usr1_handler_c
+ Memcheck:Addr4
+ ...
+ fun:usr1_handler
+}
+{
+ # This occurs at the same time as the usr1_handler errors above.
+ ignore_wine_ntdll_no_symbol
+ Memcheck:Addr4
+ obj:*ntdll.dll.so
+}
+{
+ # mysterious leaks in rsaenh.dll.so, no symbols / incorrect symbols.
+ ignore_wine_rsaenh_no_symbols
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ obj:*rsaenh.dll.so
+
+}
+{
+ # Maybe a leak in strtoi() ?? StringToInt() seems to be leak free.
+ ignore_strtoi_leak
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ ...
+ fun:StringToInt
+}
+{
+ # Maybe a leak in _strtoi64() ?? StringToInt64() seems to be leak free.
+ ignore_strtoi64_leak
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ ...
+ fun:StringToInt64
+}
+{
+ # A leak in _vsnprintf_s?
+ ignore_vsnprintf_s
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ ...
+ fun:_vsnprintf_s
+ fun:base::vsnprintf
+ fun:vsnprintfT
+}
+{
+ # A leak in _wfopen_s() ?? ReadFileToString() behaves correctly.
+ ignore_wfopen_s_leak
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ ...
+ fun:_wfopen_s
+ fun:file_util::ReadFileToString
+ fun:FileReader::ReadFileOnBackgroundThread
+}
+{
+ # Leaking an 8 byte Clipboard object in the test code.
+ ignore_get_clipboard
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ ...
+ fun:operator new
+ fun:TestViewsDelegate::GetClipboard
+ fun:views::NativeTextfieldWin::OnCopy
+}
+{
+ # mysterious leak in _calloc_crt. Bug in Wine perhaps?? Hard to reproduce.
+ ignore_calloc_crt
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ fun:win_heap_malloc
+ fun:malloc
+ fun:calloc
+ fun:_calloc_impl
+ fun:_calloc_crt
+ STOP
+}
+{
+ # Boy, oh, boy do we need a better way to deal with this.
+ # See https://bugs.kde.org/show_bug.cgi?id=190660
+ valgrind_bug_190660
+ Memcheck:Addr4
+ fun:strlen
+}
+{
+ # Boy, oh, boy do we need a better way to deal with this.
+ # See https://bugs.kde.org/show_bug.cgi?id=190660
+ valgrind_bug_190660
+ Memcheck:Addr4
+ fun:strcmp
+}
+{
+ # Boy, oh, boy do we need a better way to deal with this.
+ # See https://bugs.kde.org/show_bug.cgi?id=190660
+ valgrind_bug_190660
+ Memcheck:Addr4
+ fun:strchr
+}
+{
+ # Boy, oh, boy do we need a better way to deal with this.
+ # See https://bugs.kde.org/show_bug.cgi?id=190660
+ valgrind_bug_190660
+ Memcheck:Addr4
+ fun:strcat
+}
+{
+ # Boy, oh, boy do we need a better way to deal with this.
+ # See https://bugs.kde.org/show_bug.cgi?id=190660
+ valgrind_bug_190660
+ Memcheck:Addr4
+ fun:strncpy
+}
+{
+ # Same leak exists in src/tools/valgrind/memcheck/suppressions.txt
+ # with a mangled stack signature.
+ intentional_ChromeThreadTest_NotReleasedIfTargetThreadNonExistent_Test_leak
+ Memcheck:Leak
+ ...
+ fun:operator new
+ fun:ChromeThreadTest_NotReleasedIfTargetThreadNonExistent_Test::TestBody
+ fun:testing::Test::Run
+}
+
+# 4. Suppressions for real chromium bugs that are not yet fixed.
+{
+ # Same leak exists in src/tools/valgrind/memcheck/suppressions.txt
+ # with a mangled stack signature.
+ bug_15276
+ Memcheck:Cond
+ fun:cld::OctaHashV3Lookup4
+ fun:cld::DoOctaScoreV3
+ fun:ScoreQuadgrams
+ fun:CompactLangDetImpl::DetectLanguageSummaryV25
+ fun:CompactLangDet::DetectLanguage
+}
+{
+ # Same leak exists in src/tools/valgrind/memcheck/suppressions.txt
+ # with a mangled stack signature.
+ bug_20653a
+ Memcheck:Param
+ write(buf)
+ ...
+ fun:sqlite3OsWrite
+ fun:pager_write_pagelist
+}
+{
+ # Same leak exists in src/tools/valgrind/memcheck/suppressions.txt
+ # with a mangled stack signature.
+ bug_20653b
+ Memcheck:Param
+ write(buf)
+ ...
+ fun:*Write
+ fun:sqlite3OsWrite
+ ...
+ fun:pager_write
+}
+{
+ bug_30547
+ Memcheck:Leak
+ ...
+ fun:operator new
+ fun:ImportantFileWriter::WriteNow
+ fun:BookmarkStorage::SaveNow
+ fun:BookmarkStorage::BookmarkModelDeleted
+}
+{
+ bug_30614
+ Memcheck:Cond
+ fun:strncpy
+ fun:AffixMgr::parse_affix
+ ...
+ fun:SpellCheck::InitializeHunspell
+}
+{
+ bug_31640
+ Memcheck:Leak
+ fun:RtlAllocateHeap
+ ...
+ fun:xmlGetGlobalState
+ fun:__xmlGenericError
+ fun:ScopedXmlErrorFunc::ScopedXmlErrorFunc
+ fun:UpdateManifest::Parse
+}
+{
+ bug_31643
+ Memcheck:Leak
+ ...
+ fun:operator new
+ fun:browser_sync::UIModelWorker::DoWorkAndWaitUntilDone
+ fun:Syncer::SyncShare
+}
+{
+ bug_31644
+ Memcheck:Leak
+ ...
+ fun:operator new
+ fun:NewRunnableMethod<ExtensionsServiceBackend,void (__thiscall ExtensionsServiceBackend::*)(void)>
+ fun:ExtensionsService::ClearProvidersForTesting
+}
+{
+ bug_33424
+ Memcheck:Leak
+ ...
+ fun:net::TCPClientSocketWin::Read
+ fun:net::*::DoReadHeaders
+ ...
+ fun:net::*::OnIOComplete
+}
+{
+ # This is a bit flaky, but it happens with both
+ # FLAKY_FTPDirectoryListing_Test and FLAKY_FTPCacheLoginBoxCredentials_Test
+ bug_33425
+ Memcheck:Leak
+ ...
+ fun:net::TCPClientSocketWin::Read
+ fun:net::FtpNetworkTransaction::DoCtrlRead
+ fun:net::FtpNetworkTransaction::DoLoop
+ fun:net::FtpNetworkTransaction::OnIOComplete
+ fun:DispatchToMethod<net::FtpNetworkTransaction,void (__thiscall net::FtpNetworkTransaction::*)(int),int>
+}
+{
+ # This is an invalid read/write that shows up sporadically.
+ bug_33426
+ Memcheck:Addr4
+ fun:_free_base
+ ...
+ fun:std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char> >::~basic_stringbuf<char,std::char_traits<char>,std::allocator<char> >
+ fun:std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> >::~basic_stringstream<char,std::char_traits<char>,std::allocator<char> >
+ fun:std::basic_stringstream<char,std::char_traits<char>,std::allocator<char> >::`vbase destructor'
+ fun:testing::internal::StrStreamToString
+ fun:testing::Message::GetString
+ fun:testing::AssertionResult::operator<<<enum net::LoadLog::EventPhase>
+ ...
+ fun:SSLClientSocketTest_ConnectMismatched_Test::TestBody
+}
diff --git a/tools/valgrind/wine_memcheck/winetricks b/tools/valgrind/wine_memcheck/winetricks
new file mode 100644
index 0000000..3ea5dfa
--- /dev/null
+++ b/tools/valgrind/wine_memcheck/winetricks
@@ -0,0 +1,3548 @@
+#!/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)
+# 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
+
+#---- Constants -------------------------------------------------
+
+# Name of this version of winetricks (YYYYMMDD)
+VERSION=20100201
+
+early_wine()
+{
+ WINEDLLOVERRIDES=mshtml= $WINE "$@"
+}
+
+# Default values for important settings if not already in environment.
+# These settings should not need editing here.
+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}
+ DRIVE_C="C:/"
+ XXXPATH=cygpath
+ ;;
+ *)
+ WINE=${WINE:-wine}
+ WINEPREFIX=${WINEPREFIX:-$HOME/.wine}
+ DRIVE_C="$WINEPREFIX/drive_c"
+ XXXPATH="early_wine winepath"
+ ;;
+esac
+
+# Internal variables; these locations are not too important
+WINETRICKS_CACHE="$HOME/winetrickscache"
+# Default to hiding the directory, by popular demand
+test -d "$WINETRICKS_CACHE" || WINETRICKS_CACHE=$HOME/.winetrickscache
+WINETRICKS_CACHE_WIN="`$XXXPATH -w $WINETRICKS_CACHE | tr '\012' ' ' | sed 's/ $//'`"
+WINETRICKS_TMP="$DRIVE_C"/winetrickstmp
+WINETRICKS_TMP_WIN='c:\winetrickstmp'
+mkdir -p $WINETRICKS_TMP
+
+# Overridden for windows
+ISO_MOUNT_ROOT=/mnt/winetricks
+
+WINDIR="$DRIVE_C/windows"
+
+# 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
+*[01]) SOURCEFORGE=http://internap.dl.sourceforge.net/sourceforge ;;
+*[23]) SOURCEFORGE=http://easynews.dl.sourceforge.net/sourceforge ;;
+*) SOURCEFORGE=http://downloads.sourceforge.net;;
+esac
+
+#---- Functions -------------------------------------------------
+
+# Check for known desktop environments
+# Set variable DE to the desktop environment's name, lowercase
+detectDE() {
+ if [ x"$KDE_FULL_SESSION" = x"true" ]
+ then
+ DE=kde
+ elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]
+ then
+ DE=gnome
+ elif [ x"$DISPLAY" != x"" ]
+ then
+ DE=x
+ else
+ DE=none
+ fi
+}
+
+warn() {
+ echo "$@"
+
+ test "$GUI" = 1 || return
+
+ # For some reason, nulls were showing up in $@?!, causing truncated output in zenity
+ msg="`echo $@ | tr '\000' ' '`"
+ case $DE in
+ gnome) zenity --error --title=Winetricks --text="$msg" --no-wrap;;
+ kde) kdialog --title Winetricks --error "$msg" ;;
+ x) xmessage -title Winetricks -center " Error: $msg " ;;
+ esac
+}
+
+die() {
+ 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
+ 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 " art2kmin MS Access 2007 runtime"
+ echo " atmlib Adobe Type Manager. Needed for Adobe CS4"
+ echo " autohotkey Autohotkey (open source gui scripting language)"
+ 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 " controlpad MS ActiveX Control Pad"
+ echo " corefonts MS Arial, Courier, Times fonts"
+ echo " cygwin Unix apps for Windows (needed by some build scripts)"
+ echo " d3dx9 MS d3dx9_??.dll (from DirectX 9 user redistributable)"
+ echo " d3dx10 MS d3dx10_??.dll (from DirectX user redistributable)"
+ echo " dcom98 MS DCOM (ole32, oleaut32); requires Windows 98 license, but does not check for one"
+ echo " dinput8 MS dinput8.dll (from DirectX 9 user redistributable)"
+ echo " dirac0.8 the obsolete Dirac 0.8 directshow filter"
+ 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 " 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 (requires Windows license, but does not check for one)"
+ 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 " 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 " hosts Adds empty C:\windows\system32\drivers\etc\{hosts,services} files"
+ echo " icodecs Intel Codecs (Indeo)"
+ echo " ie6 Microsoft Internet Explorer 6.0"
+ echo " ie7 Microsoft Internet Explorer 7.0"
+ echo " jet40 MS Jet 4.0 Service Pack 8"
+ echo " kde KDE for Windows installer"
+ echo " liberation Red Hat Liberation fonts (Sans, Serif, Mono)"
+ 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 " mono20 mono-2.0.1"
+ echo " mono22 mono-2.2"
+ echo " mono24 mono-2.4"
+ echo " mozillabuild Mozilla build environment"
+ echo " mpc Media Player Classic"
+ echo " mshflxgd MS Hierarchical Flex Grid Control"
+ echo " msi2 MS 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 Script Control"
+ echo " msxml3 MS XML version 3"
+ echo " msxml4 MS XML version 4"
+ echo " msxml6 MS XML version 6"
+ echo " ogg ogg filters/codecs: flac, theora, speex, vorbis, schroedinger"
+ echo " ole2 MS 16 bit OLE"
+ 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 " quicktime72 Apple Quicktime 7.2"
+ echo " riched20 MS riched20 and riched32"
+ echo " riched30 MS riched30"
+ echo " richtx32 MS Rich TextBox Control 6.0"
+ echo " shockwave Adobe Shockwave Player"
+ echo " tahoma MS Tahoma font (not part of corefonts)"
+ echo " urlmon MS urlmon.dll"
+ echo " usp10 MS usp10.dll (Uniscribe)"
+ 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 " 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 " 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 " 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 " xvid xvid video codec"
+ echo "Pseudopackages:"
+ echo " allfonts All listed fonts (corefonts, tahoma, liberation)"
+ echo " allcodecs All listed codecs (xvid, ffdshow, icodecs)"
+ echo " ddr=gdi Set DirectDrawRenderer to GDI (default)"
+ echo " ddr=opengl Set DirectDrawRenderer to OpenGL"
+ echo " fakeie6 Set registry to claim IE6sp1 is installed"
+ 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 " orm=pbuffer Registry tweak: OffscreenRenderingMode=pbuffer"
+ 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=audioio Set sound driver to AudioIO"
+ echo " sound=coreaudio Set sound driver to CoreAudio"
+ echo " sound=esound 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 " nt40 Set windows version to nt40"
+ 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 " winver= Set windows version to default (winxp)"
+ echo " volnum Rename drive_c to harddiskvolume0 (needed by some installers)"
+}
+
+#----------------------------------------------------------------
+# Trivial GUI just to handle case where user tries running without commandline
+
+kde_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
+ kdialog --title "$title" --separate-output --checklist "$text" $args
+}
+
+x_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") | \
+ xmessage -print -file - -buttons "Cancel,$args" | sed 's/Cancel//'
+}
+
+showmenu()
+{
+ case $DE in
+ kde) kde_showmenu "$@" ;;
+ gnome|x) x_showmenu "$@" ;;
+ none) usage 1>&2; exit 1;;
+ esac
+}
+
+dogui()
+{
+ if [ $DE = gnome ]
+ then
+ echo "zenity --title 'Select a package to install' --text 'Install?' --list --checklist --column '' --column Package --column Description --height 440 --width 600 \\" > "$WINETRICKS_TMP"/zenity.sh
+ usage | grep '^ [a-z]' | sed 's/^ \([^ ]*\) *\(.*\)/FALSE "\1" '"'\2'/" | sed 's/$/ \\/' >> $WINETRICKS_TMP/zenity.sh
+ todo="`sh "$WINETRICKS_TMP"/zenity.sh | tr '|' ' '`"
+ else
+ packages=`usage | awk '/^ [a-z]/ {print $1}'`
+ todo="`showmenu "winetricks" "Select a package to install" "Install?" "Package" $packages`"
+ fi
+
+ if test "$todo"x = x
+ then
+ exit 0
+ fi
+}
+
+#----- Helpers ------------------------------------------------
+
+# Execute with error checking
+try() {
+ # "VAR=foo try cmd" fails to put VAR in the environment
+ # with some versions of bash if 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
+ die "Note: command '$@' returned status $status. Aborting."
+ fi
+}
+
+try_regedit() {
+ # on windows, doesn't work without cmd /c
+ case "$OS" in
+ "Windows_NT") cmdc="cmd /c";;
+ *) unset cmdc
+ esac
+
+ try early_wine $cmdc regedit "$@"
+}
+
+regedit() {
+ die oops, bug, please report
+}
+
+# verify an sha1sum
+verify_sha1sum() {
+ wantsum=$1
+ file=$2
+
+ gotsum=`$SHA1SUM < $file | sed 's/ .*//'`
+ if [ "$gotsum"x != "$wantsum"x ]
+ then
+ die "sha1sum mismatch! Rename $file and try again."
+ fi
+}
+
+# Download a file
+# Usage: package url [sha1sum [filename]]
+# Caches downloads in winetrickscache/$package
+download() {
+ if [ "$4"x != ""x ]
+ then
+ file="$4"
+ else
+ file=`basename "$2"`
+ fi
+ cache="$WINETRICKS_CACHE/$1"
+ mkdir -p "$cache"
+ if test ! -f "$cache/$file"
+ then
+ 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`" ]
+ 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)
+ try wget -O "$file" -nd -c --read-timeout=300 --retry-connrefused --header "Accept-Encoding: gzip,deflate" "$2"
+ else
+ # curl doesn't get filename from the location given by the server!
+ # fortunately, we know it
+ try curl -L -o "$file" -C - --header "Accept-Encoding: gzip,deflate" "$2"
+ 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`
+ case $FILE-$file in
+ /*-*.exe)
+ case `file $file` in
+ *gzip*) mv $file $file.gz; gunzip < $file.gz > $file;;
+ esac
+ esac
+
+ cd "$olddir"
+ fi
+ if [ "$3"x != ""x ]
+ then
+ verify_sha1sum $3 "$cache/$file"
+ fi
+}
+
+set_winver() {
+ echo "Setting Windows version to $1"
+ cat > "$WINETRICKS_TMP"/set-winver.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine]
+"Version"="$1"
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\set-winver.reg
+}
+
+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\""
+ ) > "$WINETRICKS_TMP"/set-winver.reg
+
+ try_regedit "$WINETRICKS_TMP_WIN"\\set-winver.reg
+ rm "$WINETRICKS_TMP"/set-winver.reg
+}
+
+set_ddr() {
+ echo "Setting DirectDrawRenderer to $1"
+ cat > "$WINETRICKS_TMP"/set-ddr.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\Direct3D]
+"DirectDrawRenderer"="$1"
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP"/set-ddr.reg
+}
+set_orm() {
+ echo "Setting OffscreenRenderingMode to $1"
+ cat > "$WINETRICKS_TMP"/set-orm.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\Direct3D]
+"OffscreenRenderingMode"="$1"
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\set-orm.reg
+}
+
+set_rtlm() {
+ echo "Setting RenderTargetLockMode to $1"
+ cat > "$WINETRICKS_TMP"/set-rtlm.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\Direct3D]
+"RenderTargetLockMode"="$1"
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP"/set-rtlm.reg
+}
+
+set_multisampling() {
+ echo "Setting Multisampling to $1"
+ cat > "$WINETRICKS_TMP"/set-multi.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\Direct3D]
+"Multisampling"="$1"
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP"/set-multi.reg
+}
+
+set_sound_driver() {
+ echo "Setting sound driver to $1"
+ cat > "$WINETRICKS_TMP"/set-sound.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\Drivers]
+"Audio"="$1"
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\set-sound.reg
+}
+
+disable_crashdialog() {
+ echo "Disabling graphical crash dialog"
+ cat > "$WINETRICKS_TMP"/crashdialog.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\WineDbg]
+"ShowCrashDialog"=dword:00000000
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\crashdialog.reg
+}
+
+sandbox() {
+ # remove symlinks
+ try rm "$WINEPREFIX/drive_c/users/$USER/Desktop"
+ try rm "$WINEPREFIX/drive_c/users/$USER/My Documents"
+ try rm "$WINEPREFIX/drive_c/users/$USER/My Music"
+ try rm "$WINEPREFIX/drive_c/users/$USER/My Pictures"
+ try rm "$WINEPREFIX/drive_c/users/$USER/My Videos"
+ # create replacement directories
+ try mkdir "$WINEPREFIX/drive_c/users/$USER/Desktop"
+ try mkdir "$WINEPREFIX/drive_c/users/$USER/My Documents"
+ try mkdir "$WINEPREFIX/drive_c/users/$USER/My Music"
+ try mkdir "$WINEPREFIX/drive_c/users/$USER/My Pictures"
+ try mkdir "$WINEPREFIX/drive_c/users/$USER/My Videos"
+}
+
+unset_winver() {
+ echo "Clearing Windows version back to default"
+ cat > "$WINETRICKS_TMP"/unset-winver.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine]
+"Version"=-
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\unset-winver.reg
+}
+
+override_dlls() {
+ mode=$1
+ shift
+ echo Using $mode override for following DLLs: $@
+ cat > "$WINETRICKS_TMP"/override-dll.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
+_EOF_
+ while test "$1" != ""
+ do
+ case "$1" in
+ comctl32)
+ rm -rf "$WINDIR"/winsxs/manifests/x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef.manifest
+ ;;
+ esac
+ echo "\"$1\"=\"$mode\"" >> "$WINETRICKS_TMP"/override-dll.reg
+ shift
+ done
+
+ try_regedit "$WINETRICKS_TMP_WIN"\\override-dll.reg
+ rm "$WINETRICKS_TMP"/override-dll.reg
+}
+
+override_app_dlls() {
+ app=$1
+ shift
+ mode=$1
+ shift
+ echo Using $mode override for following DLLs when running $app: $@
+ (
+ echo REGEDIT4
+ echo ""
+ echo "[HKEY_CURRENT_USER\\Software\\Wine\\AppDefaults\\$app\\DllOverrides]"
+ ) > "$WINETRICKS_TMP"/override-dll.reg
+
+ while test "$1" != ""
+ do
+ case "$1" in
+ comctl32)
+ rm -rf "$WINDIR"/winsxs/manifests/x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef.manifest
+ ;;
+ esac
+ echo "\"$1\"=\"$mode\"" >> "$WINETRICKS_TMP"/override-dll.reg
+ shift
+ done
+
+ try_regedit "$WINETRICKS_TMP_WIN"\\override-dll.reg
+ rm "$WINETRICKS_TMP"/override-dll.reg
+}
+
+register_font() {
+ file=$1
+ shift
+ font=$1
+ #echo "Registering $file as $font"
+ cat > "$WINETRICKS_TMP"/register-font.reg <<_EOF_
+REGEDIT4
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts]
+"$font"="$file"
+_EOF_
+ # too verbose
+ try_regedit "$WINETRICKS_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%" | sed 's,\\\\,\\\\\\\\,g'`"
+
+ cat > "$WINETRICKS_TMP"/path.reg <<_EOF_
+REGEDIT4
+
+[HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment]
+_EOF_
+ echo '"PATH"="'"$NEW_PATH;$WIN_PATH\"" | sed "s/\\\\/\\\\\\\\/g" >> "$WINETRICKS_TMP"/path.reg
+
+ try_regedit "$WINETRICKS_TMP_WIN"\\path.reg
+ rm -f "$WINETRICKS_TMP"/path.reg
+}
+
+#----- common download for several verbs
+
+helper_directx_dl() {
+ # Aug 2009 DirectX 9c User Redistributable
+ # http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=04ac064b-00d1-474e-b7b1-442d8712d553
+ download . http://download.microsoft.com/download/B/7/9/B79FC9D7-47B8-48B7-A75E-101DEBEB5AB4/directx_aug2009_redist.exe 563b96a3d78d6038d10428f23954f083320b4019
+
+ DIRECTX_NAME=directx_aug2009_redist.exe
+}
+
+#----- One function per package, in alphabetical order ----------
+
+load_art2kmin() {
+ # See http://www.microsoft.com/downloads/details.aspx?familyid=d9ae78d9-9dc6-4b38-9fa6-2c745a175aed&displaylang=en
+ download . http://download.microsoft.com/download/D/2/A/D2A2FC8B-0447-491C-A5EF-E8AA3A74FB98/AccessRuntime.exe 571811b7536e97cf4e4e53bbf8260cddd69f9b2d
+ cd "$WINETRICKS_CACHE"
+ try $WINE AccessRuntime.exe $WINETRICKS_QUIET
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_atmlib() {
+ # http://www.microsoft.com/downloads/details.aspx?FamilyID=1001AAF1-749F-49F4-8010-297BD6CA33A0&displaylang=en
+ # FIXME: This is a huge download for a single dll.
+ download . http://download.microsoft.com/download/E/6/A/E6A04295-D2A8-40D0-A0C5-241BFECD095E/W2KSP4_EN.EXE fadea6d94a014b039839fecc6e6a11c20afa4fa8
+ cd "$WINETRICKS_TMP"
+ try cabextract "$WINETRICKS_CACHE"/W2KSP4_EN.EXE i386/atmlib.dl_
+ try cp atmlib.dll "$WINDIR"/system32
+ try rm -rf i386
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_autohotkey() {
+ download . http://www.autohotkey.net/programs/AutoHotkey104805_Install.exe 13e5a9ca6d5b7705f1cd02560c3af4d38b1904fc
+ try $WINE "$WINETRICKS_CACHE"/AutoHotkey104805_Install.exe $WINETRICKS_S
+}
+
+#----------------------------------------------------------------
+
+load_cc580() {
+ # http://www.microsoft.com/downloads/details.aspx?familyid=6f94d31a-d1e0-4658-a566-93af0d8d4a1e
+ download . http://download.microsoft.com/download/platformsdk/redist/5.80.2614.3600/w9xnt4/en-us/cc32inst.exe 94c3c494258cc54bd65d2f0153815737644bffde
+
+ try $WINE "$WINETRICKS_CACHE"/cc32inst.exe "/T:$winetricks_tmp_win" /c $WINETRICKS_QUIET
+ try unzip -o $WINETRICKS_UNIXQUIET -d "$WINDIR"/temp "$WINETRICKS_TMP"/comctl32.exe
+ try $WINE "$WINDIR"/temp/x86/50ComUpd.Exe "/T:$winetricks_tmp_win" /c $WINETRICKS_QUIET
+ try cp "$WINETRICKS_TMP"/comcnt.dll "$WINDIR"/system32/comctl32.dll
+
+ override_dlls native,builtin comctl32
+
+ # some builtin apps don't like native comctl32
+ override_app_dlls winecfg.exe builtin comctl32
+ override_app_dlls explorer.exe builtin comctl32
+ override_app_dlls iexplore.exe builtin comctl32
+}
+
+#----------------------------------------------------------------
+
+load_cmake() {
+ download . http://www.cmake.org/files/v2.6/cmake-2.6.4-win32-x86.exe 00bd502423546b8bce19ffc180ea78e0e2f396cf
+ try $WINE "$WINETRICKS_CACHE"/cmake-2.6.4-win32-x86.exe
+}
+
+#----------------------------------------------------------------
+
+load_comctl32ocx() {
+ # http://www.microsoft.com/downloads/details.aspx?FamilyID=25437D98-51D0-41C1-BB14-64662F5F62FE
+ download . http://download.microsoft.com/download/3/a/5/3a5925ac-e779-4b1c-bb01-af67dc2f96fc/VisualBasic6-KB896559-v1-ENU.exe f52cf2034488235b37a1da837d1c40eb2a1bad84
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/VisualBasic6-KB896559-v1-ENU.exe
+ try cp "$WINETRICKS_TMP"/mscomctl.ocx "$WINDIR"/system32/mscomctl.ocx
+ try cp "$WINETRICKS_TMP"/comctl32.ocx "$WINDIR"/system32/comctl32.ocx
+ try $WINE regsvr32 comctl32.ocx
+ try $WINE regsvr32 mscomctl.ocx
+}
+
+#----------------------------------------------------------------
+
+load_colorprofile() {
+ download . http://download.microsoft.com/download/whistler/hwdev1/1.0/wxp/en-us/ColorProfile.exe 6b72836b32b343c82d0760dff5cb51c2f47170eb
+ try unzip -o $WINETRICKS_UNIXQUIET -d "$WINETRICKS_TMP" "$WINETRICKS_CACHE"/ColorProfile.exe
+ mkdir -p "$WINDIR"/system32/spool/drivers/color
+ try cp -f "$WINETRICKS_TMP/sRGB Color Space Profile.icm" "$WINDIR"/system32/spool/drivers/color
+}
+
+#----------------------------------------------------------------
+
+load_controlpad() {
+ # http://msdn.microsoft.com/en-us/library/ms968493.aspx
+ # Fixes error "Failed to load UniText..."
+ load_wsh56
+ download . http://download.microsoft.com/download/activexcontrolpad/install/4.0.0.950/win98mexp/en-us/setuppad.exe 8921e0f52507ca6a373c94d222777c750fb48af7
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/setuppad.exe
+ echo "If setup says 'Unable to start DDE ...', press Ignore"
+ try $WINE "$WINETRICKS_TMP"/setup $WINETRICKS_QUIET_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 download locations to sites that actually contained the
+ # fonts to download (as of 04-03-2008)
+ #download . $SOURCEFORGE/corefonts/andale32.exe c4db8cbe42c566d12468f5fdad38c43721844c69
+ download . $SOURCEFORGE/corefonts/arial32.exe 6d75f8436f39ab2da5c31ce651b7443b4ad2916e
+ download . $SOURCEFORGE/corefonts/arialb32.exe d45cdab84b7f4c1efd6d1b369f50ed0390e3d344
+ download . $SOURCEFORGE/corefonts/comic32.exe 2371d0327683dcc5ec1684fe7c275a8de1ef9a51
+ download . $SOURCEFORGE/corefonts/courie32.exe 06a745023c034f88b4135f5e294fece1a3c1b057
+ download . $SOURCEFORGE/corefonts/georgi32.exe 90e4070cb356f1d811acb943080bf97e419a8f1e
+ download . $SOURCEFORGE/corefonts/impact32.exe 86b34d650cfbbe5d3512d49d2545f7509a55aad2
+ download . $SOURCEFORGE/corefonts/times32.exe 20b79e65cdef4e2d7195f84da202499e3aa83060
+ download . $SOURCEFORGE/corefonts/trebuc32.exe 50aab0988423efcc9cf21fac7d64d534d6d0a34a
+ download . $SOURCEFORGE/corefonts/verdan32.exe f5b93cedf500edc67502f116578123618c64a42a
+ 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
+ # try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/andale32.exe
+
+ # Display EULA
+ test x"$WINETRICKS_QUIET" = x"" || try $WINE "$WINETRICKS_CACHE"/arial32.exe $WINETRICKS_QUIET
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/arial32.exe
+ try cp -f "$WINETRICKS_TMP"/Arial*.TTF "$winefontsdir"
+ register_font Arial.TTF "Arial (TrueType)"
+ register_font Arialbd.TTF "Arial Bold (TrueType)"
+ register_font Arialbi.TTF "Arial Bold Italic (TrueType)"
+ register_font Ariali.TTF "Arial Italic (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/arialb32.exe
+ try cp -f "$WINETRICKS_TMP"/AriBlk.TTF "$winefontsdir"
+ register_font AriBlk.TTF "Arial Black (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/comic32.exe
+ try cp -f "$WINETRICKS_TMP"/Comic*.TTF "$winefontsdir"
+ register_font Comic.TTF "Comic Sans MS (TrueType)"
+ register_font Comicbd.TTF "Comic Sans MS Bold (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/courie32.exe
+ try cp -f "$WINETRICKS_TMP"/cour*.ttf "$winefontsdir"
+ register_font Cour.TTF "Courier New (TrueType)"
+ register_font CourBD.TTF "Courier New Bold (TrueType)"
+ register_font CourBI.TTF "Courier New Bold Italic (TrueType)"
+ register_font Couri.TTF "Courier New Italic (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/georgi32.exe
+ try cp -f "$WINETRICKS_TMP"/Georgia*.TTF "$winefontsdir"
+ register_font Georgia.TTF "Georgia (TrueType)"
+ register_font Georgiab.TTF "Georgia Bold (TrueType)"
+ register_font Georgiaz.TTF "Georgia Bold Italic (TrueType)"
+ register_font Georgiai.TTF "Georgia Italic (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/impact32.exe
+ try cp -f "$WINETRICKS_TMP"/Impact.TTF "$winefontsdir"
+ register_font Impact.TTF "Impact (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/times32.exe
+ try cp -f "$WINETRICKS_TMP"/Times*.TTF "$winefontsdir"
+ register_font Times.TTF "Times New Roman (TrueType)"
+ register_font Timesbd.TTF "Times New Roman Bold (TrueType)"
+ register_font Timesbi.TTF "Times New Roman Bold Italic (TrueType)"
+ register_font Timesi.TTF "Times New Roman Italic (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/trebuc32.exe
+ try cp -f "$WINETRICKS_TMP"/trebuc*.ttf "$winefontsdir"
+ register_font Trebuc.TTF "Trebucet MS (TrueType)"
+ register_font Trebucbd.TTF "Trebucet MS Bold (TrueType)"
+ register_font Trebucbi.TTF "Trebucet MS Bold Italic (TrueType)"
+ register_font Trebucit.TTF "Trebucet MS Italic (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/verdan32.exe
+ try cp -f "$WINETRICKS_TMP"/Verdana*.TTF "$winefontsdir"
+ register_font Verdana.TTF "Verdana (TrueType)"
+ register_font Verdanab.TTF "Verdana Bold (TrueType)"
+ register_font Verdanaz.TTF "Verdana Bold Italic (TrueType)"
+ register_font Verdanai.TTF "Verdana Italic (TrueType)"
+
+ try cabextract -q --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/webdin32.exe
+ try cp -f "$WINETRICKS_TMP"/Webdings.TTF "$winefontsdir"
+ register_font Webdings.TTF "Webdings (TrueType)"
+}
+
+#----------------------------------------------------------------
+
+load_cygwin() {
+ # See http://bugs.winehq.org/show_bug.cgi?id=21206
+ # Current is 1.7, but that doesn't install on wine, so jump through
+ # hoops to get 1.5
+ #download cygwin http://cygwin.com/setup.exe fdc9379ed58231cddd25bb7b448426681a3dd3c3
+ # this is some random verison of cygwin's setup from mid-2009, before the change that wine couldn't handle.
+ download cygwin http://kegel.com/cygwin/1.5/setup.exe 5cfb8ebe4f385b0fcffa04d22d607ec75ea05180
+ mkdir -p "$DRIVE_C"/cygpkgs
+ # If you happen to have saved your cygpkgs directory, unpack it now
+ test -f "$WINETRICKS_CACHE/cygwin/cygpkgs.tgz" && (cd "$DRIVE_C"; gunzip -dc "$WINETRICKS_CACHE/cygwin/cygpkgs.tgz" | tar -xf -)
+ cp "$WINETRICKS_CACHE/cygwin/setup.exe" "$DRIVE_C"/cygpkgs
+ cd "$DRIVE_C"/cygpkgs
+ 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 :-(
+ try $WINE setup.exe -X
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_d3dx9() {
+ helper_directx_dl
+
+ # Kinder, less invasive directx - only extract and override d3dx9_??.dll
+ cabextract -d "$WINETRICKS_TMP" -L -F '*d3dx9*x86*' "$WINETRICKS_CACHE"/$DIRECTX_NAME
+ for x in `ls "$WINETRICKS_TMP"/*.cab`
+ do
+ cabextract -d "$WINDIR"/system32 -L -F '*.dll' "$x"
+ done
+
+ # For now, not needed, but when Wine starts preferring our builtin dll over native it will be.
+ override_dlls native d3dx9_24 d3dx9_25 d3dx9_26 d3dx9_27 d3dx9_28 d3dx9_29 d3dx9_30
+ override_dlls native d3dx9_31 d3dx9_32 d3dx9_33 d3dx9_34 d3dx9_35 d3dx9_36 d3dx9_37
+ override_dlls native d3dx9_38 d3dx9_39 d3dx9_40 d3dx9_41 d3dx9_42
+}
+
+#----------------------------------------------------------------
+
+load_d3dx10() {
+ helper_directx_dl
+
+ # Kinder, less invasive directx10 - only extract and override d3dx10_??.dll
+ cabextract -d "$WINETRICKS_TMP" -L -F '*d3dx10*x86*' "$WINETRICKS_CACHE"/$DIRECTX_NAME
+ for x in `ls "$WINETRICKS_TMP"/*.cab`
+ do
+ cabextract -d "$WINDIR"/system32 -L -F '*.dll' "$x"
+ done
+
+ # For now, not needed, but when Wine starts preferring our builtin dll over native it will be.
+ override_dlls native d3dx10_33 d3dx10_34 d3dx10_35 d3dx10_36 d3dx10_37
+ override_dlls native d3dx10_38 d3dx10_39 d3dx10_40 d3dx10_41 d3dx10_42
+}
+
+#----------------------------------------------------------------
+load_dinput8() {
+ helper_directx_dl
+
+ cabextract -d "$WINETRICKS_TMP" -L -F 'dxnt.cab' "$WINETRICKS_CACHE"/$DIRECTX_NAME
+ cabextract -d "$WINDIR"/system32 -L -F 'dinput8.dll' "$WINETRICKS_TMP/dxnt.cab"
+
+ try $WINE regsvr32 dinput8
+
+ override_dlls native dinput8
+}
+
+#----------------------------------------------------------------
+
+load_dirac08() {
+ download . http://codecpack.nl/dirac_dsfilter_080.exe aacfcddf6b2636de5f0a50422ba9155e395318af
+ try $WINE "$WINETRICKS_CACHE"/dirac_dsfilter_080.exe $WINETRICKS_SILENT
+}
+
+#----------------------------------------------------------------
+
+load_directplay() {
+ helper_directx_dl
+
+ cabextract -d "$WINETRICKS_TMP" -L -F dxnt.cab "$WINETRICKS_CACHE"/$DIRECTX_NAME
+ cabextract -d "$WINDIR"/system32 -L -F 'dplaysvr.exe' "$WINETRICKS_TMP/dxnt.cab"
+ cabextract -d "$WINDIR"/system32 -L -F 'dplayx.dll' "$WINETRICKS_TMP/dxnt.cab"
+ cabextract -d "$WINDIR"/system32 -L -F 'dpnet.dll' "$WINETRICKS_TMP/dxnt.cab"
+ cabextract -d "$WINDIR"/system32 -L -F 'dpnhpast.dll' "$WINETRICKS_TMP/dxnt.cab"
+ cabextract -d "$WINDIR"/system32 -L -F 'dpwsockx.dll' "$WINETRICKS_TMP/dxnt.cab"
+
+ try $WINE regsvr32 dplayx.dll
+ try $WINE regsvr32 dpnet.dll
+ try $WINE regsvr32 dpnhpast.dll
+
+ 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
+ set_winver winxp
+ else
+ set_winver $DIRECTX_WINDOWS
+ fi
+
+ WINEDLLOVERRIDES="wintrust=b,mscoree=,ddraw,d3d8,d3d9,dsound,dinput=n" \
+ try $WINE "$WINETRICKS_CACHE"/$DIRECTX_NAME /t:"$WINETRICKS_TMP_WIN" $WINETRICKS_QUIET
+
+ # How many of these do we really need?
+ # We should probably remove most of these...?
+ override_dlls native d3dim d3drm d3dx8 d3dx9_24 d3dx9_25 d3dx9_26 d3dx9_27 d3dx9_28 d3dx9_29
+ override_dlls native d3dx9_30 d3dx9_31 d3dx9_32 d3dx9_33 d3dx9_34 d3dx9_35 d3dx9_36 d3dx9_37
+ override_dlls native d3dx9_38 d3dx9_39 d3dx9_40 d3dx9_41 d3dx9_42 d3dxof
+ override_dlls native dciman32 ddrawex devenum dmband dmcompos dmime dmloader dmscript dmstyle
+ override_dlls native dmsynth dmusic dmusic32 dnsapi dplay dplayx dpnaddr dpnet dpnhpast dpnlobby
+ override_dlls native dswave dxdiagn mscoree msdmo qcap quartz streamci
+ override_dlls builtin d3d8 d3d9 dinput dinput8 dsound
+
+ # Should be below, but fails on Wine when used silently.
+ #if [ $WINETRICKS_QUIET ]
+ #then
+ # try $WINE "$WINETRICKS_TMP_WIN"/DXSETUP.exe /silent
+ #else
+ # try $WINE "$WINETRICKS_TMP_WIN"/DXSETUP.exe
+ #fi
+
+ try $WINE "$WINETRICKS_TMP_WIN"/DXSETUP.exe
+
+ unset_winver
+}
+
+#----------------------------------------------------------------
+
+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
+
+ download divx-7 http://download.divx.com/divx/DivXInstaller.exe 3385aa8f6ba64ae32e06f651bbbea247bcc1a44d
+
+ try $WINE "$WINETRICKS_CACHE"/divx-7/DivXInstaller
+}
+
+#----------------------------------------------------------------
+
+load_dcom98() {
+ # Install native dcom per http://wiki.winehq.org/NativeDcom
+ # to avoid http://bugs.winehq.org/show_bug.cgi?id=4228
+ # See http://www.microsoft.com/downloads/details.aspx?familyid=08b1ac1b-7a11-43e8-b59d-0867f9bdda66
+ download . http://download.microsoft.com/download/d/1/3/d13cd456-f0cf-4fb2-a17f-20afc79f8a51/DCOM98.EXE aff002bd03f17340b2bef2e6b9ea8e3798e9ccc1
+
+ # Pick win98 so we can install native dcom
+ set_winver win98
+
+ # Avoid "err:setupapi:SetupDefaultQueueCallbackA copy error 5 ..."
+ # Those messages are suspect, probably shouldn't be err's.
+ rm -f "$WINDIR"/system32/ole32.dll
+ rm -f "$WINDIR"/system32/olepro32.dll
+ rm -f "$WINDIR"/system32/oleaut32.dll
+ rm -f "$WINDIR"/system32/rpcrt4.dll
+
+ # Normally only need to override ole32, but overriding advpack
+ # as well gets us the correct exit status.
+ WINEDLLOVERRIDES="ole32,advpack=n" try $WINE "$WINETRICKS_CACHE"/DCOM98.EXE $WINETRICKS_QUIET
+
+ # Set native DCOM by default for all apps (ok, this might be overkill)
+ override_dlls native,builtin ole32 oleaut32 rpcrt4
+
+ # but not for a few builtin apps that don't like it
+ override_app_dlls explorer.exe builtin ole32 oleaut32 rpcrt4
+ override_app_dlls iexplore.exe builtin ole32 oleaut32 rpcrt4
+ override_app_dlls services.exe builtin ole32 oleaut32 rpcrt4
+ override_app_dlls wineboot.exe builtin ole32 oleaut32 rpcrt4
+ override_app_dlls winedevice.exe builtin ole32 oleaut32 rpcrt4
+
+ # and undo version win98
+ unset_winver
+}
+
+#----------------------------------------------------------------
+
+load_dotnet11() {
+ DOTNET_INSTALL_DIR="$WINDIR/Microsoft.NET/Framework/v1.1.4322"
+
+ # If this is just a dependency check, don't re-install
+ if test $PACKAGE != dotnet11 && test -d "$DOTNET_INSTALL_DIR"
+ then
+ echo "prerequisite dotnet11 already installed, skipping"
+ return
+ fi
+
+ # need corefonts, else installer crashes
+ load_corefonts
+
+ # http://www.microsoft.com/downloads/details.aspx?FamilyId=262D25E3-F589-4842-8157-034D1E7CF3A3
+ download dotnet11 http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe 16a354a2207c4c8846b617cbc78f7b7c1856340e
+ if [ $WINETRICKS_QUIET ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/dotnet11/dotnetfx.exe /q /C:"install /q"
+ else
+ try $WINE "$WINETRICKS_CACHE"/dotnet11/dotnetfx.exe
+ fi
+}
+
+#----------------------------------------------------------------
+
+load_dotnet11sdk() {
+ load_dotnet11
+
+ warn "Installer hangs at end... not sure if it works fully."
+ # http://www.microsoft.com/downloads/details.aspx?familyid=9B3A2CA6-3647-4070-9F41-A333C6B9181D
+ download dotnet11sdk http://download.microsoft.com/download/5/2/0/5202f918-306e-426d-9637-d7ee26fbe507/setup.exe 9509b14924bcaf84a7780de3f6ad7894004c3450
+ cd "$WINETRICKS_CACHE"/dotnet11sdk
+ try $WINE setup.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_dotnet20() {
+ load_fontfix
+
+ # If this is just a dependency check, don't re-install
+ if test $PACKAGE != dotnet20 && test -f "$WINDIR"/system32/l_intl.nls
+ then
+ echo "prerequisite dotnet20 already installed, skipping"
+ return
+ fi
+ 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
+ test -d "$WINDIR/gecko" || test -d "$WINDIR/system32/gecko" || load_gecko
+ set_winver win2k
+ # See http://kegel.com/wine/l_intl-sh.txt for how l_intl.nls was generated
+ download dotnet20 http://kegel.com/wine/l_intl.nls 0d2e3f025bcdf852b192c9408a361ac2659fa249
+ try cp -f "$WINETRICKS_CACHE"/dotnet20/l_intl.nls "$WINDIR/system32/"
+
+ # http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5
+ download dotnet20 http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe a3625c59d7a2995fb60877b5f5324892a1693b2a
+ if [ "$WINETRICKS_QUIET"x = ""x ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/dotnet20/dotnetfx.exe
+ else
+ try $WINE "$WINETRICKS_CACHE"/dotnet20/dotnetfx.exe /q /c:"install.exe /q"
+ fi
+ unset_winver
+}
+#----------------------------------------------------------------
+
+load_dotnet20sp2() {
+ 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
+ test -d "$WINDIR/gecko" || test -d "$WINDIR/system32/gecko" || load_gecko
+ #set_winver win2k
+ # See http://kegel.com/wine/l_intl-sh.txt for how l_intl.nls was generated
+ download dotnet20 http://kegel.com/wine/l_intl.nls 0d2e3f025bcdf852b192c9408a361ac2659fa249
+ try cp -f "$WINETRICKS_CACHE"/dotnet20/l_intl.nls "$WINDIR/system32/"
+
+ # http://www.microsoft.com/downloads/details.aspx?familyid=5B2C0358-915B-4EB5-9B1D-10E506DA9D0F
+ download dotnet20 http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe 22d776d4d204863105a5db99e8b8888be23c61a7
+ if [ "$WINETRICKS_QUIET"x = ""x ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/dotnet20/NetFx20SP2_x86.exe
+ else
+ try $WINE "$WINETRICKS_CACHE"/dotnet20/NetFx20SP2_x86.exe /q /c:"install.exe /q"
+ fi
+ unset_winver
+}
+
+#----------------------------------------------------------------
+
+load_dotnet20sdk() {
+ load_dotnet20
+
+ # http://www.microsoft.com/downloads/details.aspx?familyid=9B3A2CA6-3647-4070-9F41-A333C6B9181D
+ download dotnet20sdk http://download.microsoft.com/download/c/4/b/c4b15d7d-6f37-4d5a-b9c6-8f07e7d46635/setup.exe 4e4b1072b5e65e855358e2028403f2dc52a62ab4
+ cd "$WINETRICKS_CACHE"/dotnet20sdk
+ try $WINE setup.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_dotnet30() {
+ # If this is just a dependency check, don't re-install
+ if test $PACKAGE != dotnet30 && test -d "$WINDIR/Microsoft.NET/Framework/v3.0/Microsoft .NET Framework 3.0"
+ then
+ echo "prerequisite dotnet30 already installed, skipping"
+ return
+ fi
+
+ warn "Instaling .net 3.0 runtime. Can take 15-30 minutes. See http://wiki.winehq.org/MicrosoftDotNet for tips."
+ load_dotnet20
+
+ # http://msdn.microsoft.com/en-us/netframework/bb264589.aspx
+ 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="${WINDIR}/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 "${WINDIR}/system32/spupdsvc.exe" "${LANGPACKS_BASE_PATH}/dotnetfx3langpack${lang}.exe"
+ done
+
+ if [ "$WINETRICKS_QUIET"x = ""x ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/dotnet30/dotnetfx3.exe
+ else
+ try $WINE "$WINETRICKS_CACHE"/dotnet30/dotnetfx3.exe /q /c:"install.exe /q"
+ fi
+}
+
+#----------------------------------------------------------------
+
+load_dotnet35() {
+ warn "This does not work yet, see bug 20110"
+
+ # 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
+ 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 "$DRIVE_C"
+ cabextract $WINETRICKS_UNIXQUIET "$WINETRICKS_CACHE"/dotnet35/dotnetfx35.exe
+ cd wcu/dotNetFramework
+ try $WINE dotNetFx35setup.exe /lang:ENU
+}
+
+#----------------------------------------------------------------
+
+do_droid() {
+ download . ${DROID_URL}$1';hb=HEAD' $3 $1
+ try cp -f "$WINETRICKS_CACHE"/$1 "$winefontsdir"
+ 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" 2f8a266389a8e22f68f402b775731eec6b760334
+ 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
+}
+
+#----------------------------------------------------------------
+
+# Fake IE per workaround in http://bugs.winehq.org/show_bug.cgi?id=3453
+# Just the first registry key works for most apps.
+# The App Paths part is required by a few apps, like Quickbooks Pro;
+# see http://windowsxp.mvps.org/ie/qbooks.htm
+set_fakeie6() {
+
+ cat > "$WINETRICKS_TMP"/fakeie6.reg <<"_EOF_"
+REGEDIT4
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer]
+"Version"="6.0.2900.2180"
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE]
+_EOF_
+
+ echo -n '@="' >>"$WINETRICKS_TMP"/fakeie6.reg
+ echo -n "${programfilesdir_win}" | sed "s/\\\\/\\\\\\\\/" >>"$WINETRICKS_TMP"/fakeie6.reg
+ echo '\\\\Internet Explorer\\\\iexplore.exe"' >>"$WINETRICKS_TMP"/fakeie6.reg
+
+ echo -n '"PATH"="' >>"$WINETRICKS_TMP"/fakeie6.reg
+ echo -n "${programfilesdir_win}" | sed "s/\\\\/\\\\\\\\/" >>"$WINETRICKS_TMP"/fakeie6.reg
+ echo '\\\\Internet Explorer"' >>"$WINETRICKS_TMP"/fakeie6.reg
+
+ try_regedit "$WINETRICKS_TMP_WIN"\\fakeie6.reg
+
+ # On old wineprefixes iexplore.exe is not created. Create a fake dll using
+ # shdocvw.dll that should have similar VERSIONINFO.
+ if [ ! -f "$programfilesdir_unix/Internet Explorer/iexplore.exe" ]
+ then
+ echo "You have an old wineprefix without iexplore.exe. Will create a fake now"
+ if [ ! -d "$programfilesdir_unix/Internet Explorer/iexplore.exe" ]
+ then
+ try mkdir "$programfilesdir_unix/Internet Explorer";
+ fi
+ try cp -f "$WINDIR/system32/shdocvw.dll" "$programfilesdir_unix/Internet Explorer/iexplore.exe"
+ fi
+}
+
+#----------------------------------------------------------------
+
+load_firefox() {
+ download . "http://releases.mozilla.org//pub/mozilla.org/firefox/releases/3.5.6/win32/en-US/Firefox%20Setup%203.5.6.exe" d27779d9dca25d032ceaafd3da9df1651121f8bd "Firefox Setup 3.5.6.exe"
+ if [ "$WINETRICKS_QUIET"x = ""x ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/"Firefox Setup 3.5.6.exe"
+ else
+ try $WINE "$WINETRICKS_CACHE"/"Firefox Setup 3.5.6.exe" -ms
+ fi
+}
+
+#----------------------------------------------------------------
+
+load_ffdshow() {
+ # ffdshow
+ download . $SOURCEFORGE/ffdshow-tryout/ffdshow_beta5_rev2033_20080705_clsid.exe 6da6837e2f400923ff5294a6591a88a3eee5ee40
+ try $WINE "$WINETRICKS_CACHE"/ffdshow_beta5_rev2033_20080705_clsid.exe $WINETRICKS_SILENT
+}
+
+#----------------------------------------------------------------
+
+load_flash() {
+ # 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: 10 sha1sum 7f6850ae815e953311bb94a8aa9d226f97a646dd
+ # 2009-02-27: sha1sum 86745020a25edc9695a1a6a4d59eae375665a0b3
+ # 2009-07-31: sha1sum 11a81ad1b19344c28b1e1249169f15dfbd2a04f5
+ # 2009-12-09: sha1sum f4ec0e95099e354fd01cd3bb27c202f54932dc70
+
+ download . http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_ax.exe f4ec0e95099e354fd01cd3bb27c202f54932dc70
+ try $WINE "$WINETRICKS_CACHE"/install_flash_player_ax.exe $WINETRICKS_S
+
+ # 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
+
+ download . http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player.exe ccb4811b1cc26721c4abb2e5a080868acdee7b87
+ try $WINE "$WINETRICKS_CACHE"/install_flash_player.exe $WINETRICKS_S
+}
+
+#----------------------------------------------------------------
+
+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
+ download . https://launchpadlibrarian.net/1499628/ttf-arphic-ukai_0.1.20060108.orig.tar.gz 92e577602d71454a108968e79ab667451f3602a2
+ cd "$WINETRICKS_TMP/"
+ gunzip -dc "$WINETRICKS_CACHE/ttf-arphic-ukai_0.1.20060108.orig.tar.gz" | tar -xf -
+ try mv ttf-arphic-ukai-0.1.20060108/*.ttf "$winefontsdir"
+ 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
+ download . https://launchpadlibrarian.net/1564410/ttf-arphic-uming_0.1.20060108.orig.tar.gz 1439cdd731906e9e5311f320c2cb33262b24ef91
+ cd "$WINETRICKS_TMP/"
+ gunzip -dc "$WINETRICKS_CACHE/ttf-arphic-uming_0.1.20060108.orig.tar.gz" | tar -xf -
+ try mv ttf-arphic-uming-0.1.20060108/*.ttf "$winefontsdir"
+ 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
+ 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_fs_disable() {
+ cat > "$WINETRICKS_TMP"/fs_disable.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Control Panel\Desktop]
+"FontSmoothing"="0"
+"FontSmoothingGamma"=dword:00000578
+"FontSmoothingOrientation"=dword:00000001
+"FontSmoothingType"=dword:00000000
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\fs_disable.reg
+}
+#----------------------------------------------------------------
+load_fs_grayscale() {
+ cat > "$WINETRICKS_TMP"/fs_grayscale.reg <<_EOF_
+
+REGEDIT4
+
+[HKEY_CURRENT_USER\Control Panel\Desktop]
+"FontSmoothing"="2"
+"FontSmoothingGamma"=dword:00000578
+"FontSmoothingOrientation"=dword:00000001
+"FontSmoothingType"=dword:00000001
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\fs_grayscale.reg
+}
+#----------------------------------------------------------------
+load_fs_bgr() {
+ cat > "$WINETRICKS_TMP"/fs_bgr.reg <<_EOF_
+
+REGEDIT4
+
+[HKEY_CURRENT_USER\Control Panel\Desktop]
+"FontSmoothing"="2"
+"FontSmoothingGamma"=dword:00000578
+"FontSmoothingOrientation"=dword:00000000
+"FontSmoothingType"=dword:00000002
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\fs_bgr.reg
+}
+#----------------------------------------------------------------
+load_fs_rgb() {
+ cat > "$WINETRICKS_TMP"/fs_rgb.reg <<_EOF_
+
+REGEDIT4
+
+[HKEY_CURRENT_USER\Control Panel\Desktop]
+"FontSmoothing"="2"
+"FontSmoothingGamma"=dword:00000578
+"FontSmoothingOrientation"=dword:00000001
+"FontSmoothingType"=dword:00000002
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\fs_rgb.reg
+}
+#----------------------------------------------------------------
+
+load_gecko() {
+ # 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 registry 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="$WINDIR"
+ GECKO_VERSION=0.1.0
+ GECKO_SHA1SUM=c16f1072dc6b0ced20935662138dcf019a38cd56
+ ;;
+ wine-1.1.1[234]*)
+ GECKO_DIR="$WINDIR"
+ GECKO_VERSION=0.9.0
+ GECKO_SHA1SUM=5cf410ff7fdd3f9d625f481f9d409968728d3d09
+ ;;
+ wine-1.1.1[56789]*|wine-1.1.2[0123456]*)
+ GECKO_DIR="$WINDIR"
+ GECKO_VERSION=0.9.1
+ GECKO_SHA1SUM=9a49fc691740596517e381b47096a4bdf19a87d8
+ ;;
+ *)
+ GECKO_DIR="$WINDIR/system32"
+ GECKO_VERSION=1.0.0
+ GECKO_ARCH=-x86
+ GECKO_SHA1SUM=afa22c52bca4ca77dcb9edb3c9936eb23793de01
+ ;;
+ esac
+
+ if test ! -f "$WINETRICKS_CACHE"/wine_gecko-$GECKO_VERSION$GECKO_ARCH.cab
+ then
+ # FIXME: busted if using curl!
+ download . "http://downloads.sourceforge.net/wine/wine_gecko-$GECKO_VERSION$GECKO_ARCH.cab" \
+ $GECKO_SHA1SUM wine_gecko-$GECKO_VERSION$GECKO_ARCH.cab
+ fi
+
+ cat > "$WINETRICKS_TMP"/geckopath.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\\Software\\Wine\\MSHTML\\$GECKO_VERSION]
+_EOF_
+
+ printf '"GeckoPath"="' >>"$WINETRICKS_TMP"/geckopath.reg
+ case $GECKO_VERSION in
+ 0.*)
+ printf 'c:\\windows\\gecko\\'$GECKO_VERSION'\\wine_gecko\\"' |
+ sed "s/\\\\/\\\\\\\\/g" >> "$WINETRICKS_TMP"/geckopath.reg
+ ;;
+ 1.*)
+ printf 'c:\\windows\\system32\\gecko\\'$GECKO_VERSION'\\wine_gecko\\"' |
+ sed "s/\\\\/\\\\\\\\/g" >> "$WINETRICKS_TMP"/geckopath.reg
+ ;;
+ esac
+
+ # extract the files
+ mkdir -p "$GECKO_DIR/gecko/$GECKO_VERSION"
+ cd "$GECKO_DIR/gecko/$GECKO_VERSION"
+ try cabextract $WINETRICKS_UNIXQUIET "$WINETRICKS_CACHE"/wine_gecko-$GECKO_VERSION$GECKO_ARCH.cab
+ cd "$olddir"
+
+ # set install-path
+ try_regedit "$WINETRICKS_TMP_WIN"\\geckopath.reg
+
+ # register the dll, since it was disabled before
+ try $WINE regsvr32 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 registry 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)
+ die "There isn't a gecko debug build for your Wine version."
+ ;;
+ wine-1.1.1[234]*)
+ GECKO_DIR="$WINDIR"
+ GECKO_VERSION=0.9.0
+ GECKO_SHA1SUM=23e354a82d7b7e61a6abe0384cc44669fbf92f86
+ ;;
+ wine-1.1.1[56789]*|wine-1.1.2[0123456]*)
+ GECKO_DIR="$WINDIR"
+ GECKO_VERSION=0.9.1
+ GECKO_SHA1SUM=a9b58d3330f8c78524fe4683f348302bfce96ff4
+ ;;
+ *)
+ GECKO_DIR="$WINDIR/system32"
+ GECKO_VERSION=1.0.0
+ GECKO_ARCH=-x86
+ GECKO_SHA1SUM=2de16b443826295f646cd5d54313ca421fd71210
+ ;;
+ esac
+
+ if test ! -f "$WINETRICKS_CACHE"/wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.cab
+ then
+ # FIXME: busted if using curl!
+ download . "http://downloads.sourceforge.net/wine/wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.cab" $GECKO_SHA1SUM wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.cab
+ fi
+
+ cat > "$WINETRICKS_TMP"/geckopath.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\\Software\\Wine\\MSHTML\\$GECKO_VERSION]
+_EOF_
+
+ printf '"GeckoPath"="' >>"$WINETRICKS_TMP"/geckopath.reg
+ if [ ! "$GECKO_VERSION" = "1.0.0" ]
+ then
+ printf 'c:\\windows\\gecko\\'$GECKO_VERSION'\\wine_gecko\\"' | sed "s/\\\\/\\\\\\\\/g" >>"$WINETRICKS_TMP"/geckopath.reg
+ else
+ printf 'c:\\windows\\system32\\gecko\\'$GECKO_VERSION'\\wine_gecko\\"' | sed "s/\\\\/\\\\\\\\/g" >>"$WINETRICKS_TMP"/geckopath.reg
+ fi
+
+ # extract the files
+ mkdir -p "$GECKO_DIR/gecko/$GECKO_VERSION"
+ cd "$GECKO_DIR/gecko/$GECKO_VERSION"
+ try cabextract $WINETRICKS_UNIXQUIET "$WINETRICKS_CACHE"/wine_gecko-$GECKO_VERSION$GECKO_ARCH-dbg.cab
+ cd "$olddir"
+
+ # set install-path
+ try_regedit "$WINETRICKS_TMP_WIN"\\geckopath.reg
+
+ # register the dll, since it was disabled before
+ try $WINE regsvr32 mshtml
+}
+
+#----------------------------------------------------------------
+
+load_gdiplus() {
+ # http://www.microsoft.com/downloads/details.aspx?familyid=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&displaylang=en
+ download . http://download.microsoft.com/download/a/b/c/abc45517-97a0-4cee-a362-1957be2f24e1/WindowsXP-KB975337-x86-ENU.exe b9a84bc3de92863bba1f5eb1d598446567fbc646
+ try $WINE "$WINETRICKS_CACHE"/WindowsXP-KB975337-x86-ENU.exe /extract:$WINETRICKS_TMP_WIN $WINETRICKS_QUIET
+ # And then make it globally available.
+ try cp "$WINETRICKS_TMP/asms/10/msft/windows/gdiplus/gdiplus.dll" "$WINDIR"/system32/
+
+ # For some reason, native,builtin isn't good enough...?
+ override_dlls native gdiplus
+}
+
+#----------------------------------------------------------------
+
+load_glsl_disable() {
+ echo "Disabling GLSL"
+ cat > "$WINETRICKS_TMP"/disableglsl.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\Direct3D]
+"UseGLSL"="disabled"
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\disableglsl.reg
+}
+
+#----------------------------------------------------------------
+
+load_glsl_enable() {
+ echo "Enabling GLSL"
+ cat > "$WINETRICKS_TMP"/enableglsl.reg <<_EOF_
+REGEDIT4
+
+[HKEY_CURRENT_USER\Software\Wine\Direct3D]
+"UseGLSL"="enabled"
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\enableglsl.reg
+}
+
+#----------------------------------------------------------------
+
+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
+ mkdir -p "$WINDIR"/system32/drivers/etc
+ touch "$WINDIR"/system32/drivers/etc/hosts
+ touch "$WINDIR"/system32/drivers/etc/services
+}
+
+#----------------------------------------------------------------
+
+set_heapcheck() {
+ cat > "$WINETRICKS_TMP"/heapcheck.reg <<_EOF_
+REGEDIT4
+
+[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager]
+"GlobalFlag"=dword:00200030
+
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\heapcheck.reg
+}
+
+#----------------------------------------------------------------
+
+load_icodecs() {
+ # http://downloadcenter.intel.com/Detail_Desc.aspx?strState=LIVE&ProductID=355&DwnldID=2846
+ download . ftp://download.intel.com/support/createshare/camerapack/codinstl.exe 2c5d64f472abe3f601ce352dcca75b4f02996f8a
+ try $WINE "$WINETRICKS_CACHE"/codinstl.exe
+ # 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
+ try $WINE regsvr32 ir50_32.dll
+}
+
+#----------------------------------------------------------------
+load_ie6() {
+ load_msls31
+
+ # Unregister Wine IE
+ try $WINE iexplore -unregserver
+
+ # Change the override to the native so we are sure we use and register them
+ override_dlls native,builtin iexplore.exe itircl itss jscript mlang mshtml msimtf shdoclc shdocvw shlwapi urlmon
+
+ # Remove the fake dlls, if any
+ mv "$programfilesdir_unix"/"Internet Explorer"/iexplore.exe "$programfilesdir_unix"/"Internet Explorer"/iexplore.exe.bak
+ for dll in itircl itss jscript mlang mshtml msimtf shdoclc shdocvw shlwapi urlmon
+ do
+ test -f "$WINDIR"/system32/$dll.dll &&
+ mv "$WINDIR"/system32/$dll.dll "$WINDIR"/system32/$dll.dll.bak
+ done
+
+ # The installer doesn't want to install iexplore.exe in XP mode.
+ set_winver win2k
+
+ # Workaround a IE6 Installer bug, not Wine's fault
+ # See http://bugs.winehq.org/show_bug.cgi?id=5409
+ # Actual value downloaded doesn't matter
+ rm -f "$WINETRICKS_CACHE"/ie6sites.dat
+ download . http://www.microsoft.com/windows/ie/ie6sp1/download/rtw/x86/ie6sites.dat
+
+ # Install
+ download . http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/W98NT42KMeXP/EN-US/ie6setup.exe f3ab61a785eb9611fa583612e83f3b69377f2cef
+
+ # Workaround http://bugs.winehq.org/show_bug.cgi?id=21009
+ # See also http://code.google.com/p/winezeug/issues/detail?id=78
+ rm -f "$WINDIR"/system32/browseui.dll "$WINDIR"/system32/inseng.dll
+
+ # Silent install recipe from:
+ # http://www.axonpro.sk/japo/info/MS/SILENT%20INSTALL/Unattended-Silent%20Installation%20Switches%20for%20Windows%20Apps.htm
+ if [ $WINETRICKS_QUIET ]
+ then
+ $WINE "$WINETRICKS_CACHE"/ie6setup.exe /q:a /r:n /c:"ie6wzd /S:""#e"" /q:a /r:n"
+ else
+ $WINE "$WINETRICKS_CACHE"/ie6setup.exe
+ fi
+ # IE6 exits with 194 to signal a reboot
+ status=$?
+ case $status in
+ 0|194) ;;
+ *) die ie6 installation failed
+ esac
+
+ # Work around DLL registration bug until ierunonce/RunOnce/wineboot is fixed
+ # FIXME: whittle down this list
+ cd "$WINDIR"/system32/
+ 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?)
+ unset_winver
+
+ # try $WINE "$programfilesdir_unix"/"Internet Explorer"/IEXPLORE.EXE http://www.winehq.org
+}
+
+#----------------------------------------------------------------
+
+load_ie7() {
+ # Unregister Wine IE
+ try $WINE iexplore -unregserver
+
+ # Change the override to the native so we are sure we use and register them
+ override_dlls native,builtin iexplore.exe itircl itss jscript mshtml msimtf shdoclc shdocvw shlwapi urlmon xmllite
+
+ # Bundled updspapi cannot work on wine
+ 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 "$WINDIR"/system32/$dll.dll &&
+ mv "$WINDIR"/system32/$dll.dll "$WINDIR"/system32/$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
+ download . http://winezeug.googlecode.com/svn/trunk/winetricks_files/winetest.cat ac8f50dd54d011f3bb1dd79240dae9378748449f
+
+ # Put a dummy catalog file in place
+ mkdir -p "$WINDIR"/system32/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}
+ try cp -f "$WINETRICKS_CACHE"/winetest.cat "$WINDIR"/system32/catroot/\{f750e6c3-38ee-11d1-85e5-00c04fc295ee\}/oem0.cat
+
+ # Install
+ download . http://download.microsoft.com/download/3/8/8/38889DC1-848C-4BF2-8335-86C573AD86D9/IE7-WindowsXP-x86-enu.exe d39b89c360fbaa9706b5181ae4718100687a5326
+ if [ $WINETRICKS_QUIET ]
+ then
+ $WINE "$WINETRICKS_CACHE"/IE7-WindowsXP-x86-enu.exe /quiet
+ else
+ $WINE "$WINETRICKS_CACHE"/IE7-WindowsXP-x86-enu.exe
+ fi
+
+ # Work around DLL registration bug until ierunonce/RunOnce/wineboot is fixed
+ # FIXME: whittle down this list
+ cd "$WINDIR"/system32/
+ 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 [ "$WINETRICKS_QUIET" = "" ]
+ then
+ warn "Starting ie7. To start it later, use the command $WINE '${programfilesdir_win}\\\\Internet Explorer\\\\iexplore'"
+ $WINE "${programfilesdir_win}\\Internet Explorer\\iexplore" http://www.microsoft.com/windows/internet-explorer/ie7/ > /dev/null 2>&1 &
+ else
+ warn "To start ie7, use the command $WINE '${programfilesdir_win}\\\\Internet Explorer\\\\iexplore'"
+ fi
+}
+
+#----------------------------------------------------------------
+
+load_jet40() {
+ # http://support.microsoft.com/kb/239114
+ # See also http://bugs.winehq.org/show_bug.cgi?id=6085
+ download . http://download.microsoft.com/download/4/3/9/4393c9ac-e69e-458d-9f6d-2fe191c51469/jet40sp8_9xnt.exe 8cd25342030857969ede2d8fcc34f3f7bcc2d6d4
+ try $WINE "$WINETRICKS_CACHE"/jet40sp8_9xnt.exe $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+load_kde() {
+ download . http://www.winkde.org/pub/kde/ports/win32/installer/kdewin-installer-gui-0.9.6-5.exe f612945e094390d7bc0e4f8840d308ef2b00f86e
+ mkdir -p "$programfilesdir_unix/kde"
+ try cp "$WINETRICKS_CACHE"/kdewin-installer-gui-0.9.6-5.exe "$programfilesdir_unix/kde"
+ cd "$programfilesdir_unix/kde"
+ try $WINE "$programfilesdir_win\\kde\\kdewin-installer-gui-0.9.6-5.exe"
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+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
+
+ download . https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-1.04.tar.gz 097882c92e3260742a3dc3bf033792120d8635a3
+ cd "$WINETRICKS_TMP"
+ gunzip -dc "$WINETRICKS_CACHE"/liberation-fonts-1.04.tar.gz | tar -xf -
+ mv liberation-fonts-1.04/*.ttf "$winefontsdir"
+ rm -rf "$WINETRICKS_TMP"/*
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+set_native_mdac() {
+ # Set those overrides globally so user programs get MDAC's odbc
+ # instead of wine's unixodbc
+ override_dlls native,builtin odbc32 odbccp32 oledb32
+}
+
+#----------------------------------------------------------------
+
+load_mdac25() {
+ download mdac25 http://download.microsoft.com/download/e/e/4/ee4fe9ee-6fa1-4ab6-ab8c-fe1769f4edcf/mdac_typ.exe 09e974a5dbebaaa08c7985a4a1126886dc05fd87
+ set_native_mdac
+ set_winver nt40
+ if [ $WINETRICKS_QUIET ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/mdac25/mdac_typ.exe /q /C:"setup /QNT"
+ else
+ try $WINE "$WINETRICKS_CACHE"/mdac25/mdac_typ.exe
+ fi
+ unset_winver
+}
+
+#----------------------------------------------------------------
+
+load_mdac27() {
+ download mdac27 http://download.microsoft.com/download/3/b/f/3bf74b01-16ba-472d-9a8c-42b2b4fa0d76/mdac_typ.exe f68594d1f578c3b47bf0639c46c11c5da161feee
+ set_native_mdac
+ set_winver win2k
+ if [ $WINETRICKS_QUIET ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/mdac27/mdac_typ.exe /q /C:"setup /QNT"
+ else
+ try $WINE "$WINETRICKS_CACHE"/mdac27/mdac_typ.exe
+ fi
+ unset_winver
+}
+
+#----------------------------------------------------------------
+
+load_mdac28() {
+ download mdac28 http://download.microsoft.com/download/c/d/f/cdfd58f1-3973-4c51-8851-49ae3777586f/MDAC_TYP.EXE 91bd59f0b02b67f3845105b15a0f3502b9a2216a
+ set_native_mdac
+ set_winver win98
+ if [ $WINETRICKS_QUIET ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/mdac28/mdac_typ.exe /q /C:"setup /QNT"
+ else
+ try $WINE "$WINETRICKS_CACHE"/mdac28/mdac_typ.exe
+ fi
+ unset_winver
+}
+
+#----------------------------------------------------------------
+
+load_mfc40() {
+ # See http://support.microsoft.com/kb/122244
+ download . http://download.microsoft.com/download/ole/ole2v/3.5/w351/en-us/ole2v.exe c6cac71f32405ccb09c6f375e0738e6e13f073e4
+ try unzip -o $WINETRICKS_UNIXQUIET -d "$WINETRICKS_TMP" "$WINETRICKS_CACHE"/ole2v.exe
+ try cp -f "$WINETRICKS_TMP"/MFC40.DLL "$WINDIR"/system32/
+
+ rm -rf "$WINETRICKS_TMP"/*
+}
+
+#----------------------------------------------------------------
+
+load_mingw_min() {
+ # If this is just a dependency check, don't re-install
+ if test $PACKAGE != mingw_min && test $PACKAGE != mingw && test $PACKAGE != mingw-min && test -f "$DRIVE_C"/MinGW/bin/gcc.exe
+ then
+ echo "prerequisite mingw_min already installed, skipping"
+ return
+ fi
+
+ # See http://mingw.org/wiki/Getting_Started
+ download . http://sourceforge.net/projects/mingw/files/GNU%20Binutils/binutils-2.19.1-mingw32-bin.tar.gz 1ab72f3af3fe96d08c3c9bff60c47913704d5774
+ download . http://sourceforge.net/projects/mingw/files/GCC%20Version%204/gcc-core-4.4.0-mingw32-bin.tar.gz b88b8f3644ca0cdf2c41cd03f820bf7823a8eabb
+ download . http://sourceforge.net/projects/mingw/files/GCC%20Version%204/gcc-core-4.4.0-mingw32-dll.tar.gz 0372ecf4caf75d0d9fe4a7739ca234f1a3de831b
+ download . http://sourceforge.net/projects/mingw/files/GCC%20Version%204/gmp-4.2.4-mingw32-dll.tar.gz a14dd928382f093f67cb3cd57c140625b1b265bb
+ download . http://sourceforge.net/projects/mingw/files/MinGW%20libiconv/libiconv-1.13.1-1-mingw32-dll-2.tar.lzma 5b60ce4d9ec9cf91aee437915a2469b915e1235f
+ download . http://sourceforge.net/projects/mingw/files/MinGW%20Runtime/mingwrt-3.16-mingw32-dev.tar.gz 770ff5001989d8a9a1ec4f3621d8f264a24e178f
+ download . http://sourceforge.net/projects/mingw/files/MinGW%20Runtime/mingwrt-3.16-mingw32-dll.tar.gz b8032e97c79e16a3c540043f0f39821df1531ae9
+ download . http://sourceforge.net/projects/mingw/files/GCC%20Version%204/mpfr-2.4.1-mingw32-dll.tar.gz 43b7ecb2c0c785c44321ff6c4376f51375713a7b
+ download . http://sourceforge.net/projects/mingw/files/GCC%20Version%204/pthreads-w32-2.8.0-mingw32-dll.tar.gz f922f8c0c42921fd4482a3d2e6f779d6384040c1
+ download . http://sourceforge.net/projects/mingw/files/MinGW%20API%20for%20MS-Windows/w32api-3.13-mingw32-dev.tar.gz 5eb7d8ec0fe032a92bea3a2c8282a78df2f1793c
+
+ mkdir "$DRIVE_C"/MinGW
+ cd "$DRIVE_C"/MinGW
+ gzip -d -c "$WINETRICKS_CACHE"/binutils-2.19.1-mingw32-bin.tar.gz | tar x
+ gzip -d -c "$WINETRICKS_CACHE"/mingwrt-3.16-mingw32-dev.tar.gz | tar x
+ gzip -d -c "$WINETRICKS_CACHE"/mingwrt-3.16-mingw32-dll.tar.gz | tar x
+ gzip -d -c "$WINETRICKS_CACHE"/w32api-3.13-mingw32-dev.tar.gz | tar x
+ gzip -d -c "$WINETRICKS_CACHE"/gmp-4.2.4-mingw32-dll.tar.gz | tar x
+ lzma -d -c "$WINETRICKS_CACHE"/libiconv-1.13.1-1-mingw32-dll-2.tar.lzma | tar x
+ gzip -d -c "$WINETRICKS_CACHE"/mpfr-2.4.1-mingw32-dll.tar.gz | tar x
+ gzip -d -c "$WINETRICKS_CACHE"/pthreads-w32-2.8.0-mingw32-dll.tar.gz | tar x
+ gzip -d -c "$WINETRICKS_CACHE"/gcc-core-4.4.0-mingw32-bin.tar.gz | tar x
+ gzip -d -c "$WINETRICKS_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
+
+ download . $SOURCEFORGE/mingw/GNU%20Source-Level%20Debugger/GDB-7.0/gdb-7.0-2-mingw32-bin.tar.gz a560cb0e3980d0ed853994c84038260212f58925
+
+ cd "$DRIVE_C"/MinGW
+ gzip -d -c "$WINETRICKS_CACHE"/gdb-7.0-2-mingw32-bin.tar.gz | tar x
+}
+
+#----------------------------------------------------------------
+
+load_mono20() {
+ # Load Mono, have it handle all .net requests
+ download . ftp://ftp.novell.com/pub/mono/archive/2.0.1/windows-installer/1/mono-2.0.1-gtksharp-2.10.4-win32-1.exe ccb67ac41b59522846e47d0c423836b9d334c088
+ try $WINE "$WINETRICKS_CACHE"/mono-2.0.1-gtksharp-2.10.4-win32-1.exe $WINETRICKS_SILENT
+
+ cat > "$WINETRICKS_TMP"/mono_2.0.reg <<_EOF_
+REGEDIT4
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727]
+"Install"=dword:00000001
+"SP"=dword:00000001
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\policy\v2.0]
+"4322"="3706-4322"
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\mono_2.0.reg
+ rm -f "$WINETRICKS_TMP"/mono_2.0.reg
+}
+
+#----------------------------------------------------------------
+
+load_mono22() {
+ # Load Mono, have it handle all .net requests
+ download . ftp://ftp.novell.com/pub/mono/archive/2.2/windows-installer/5/mono-2.2-gtksharp-2.12.7-win32-5.exe be977dfa9c49deea1be02ba4a2228e343f1e5840
+ try $WINE "$WINETRICKS_CACHE"/mono-2.2-gtksharp-2.12.7-win32-5.exe $WINETRICKS_SILENT
+
+ # FIXME: what should this be for mono 2.2?
+ cat > "$WINETRICKS_TMP"/mono_2.0.reg <<_EOF_
+REGEDIT4
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727]
+"Install"=dword:00000001
+"SP"=dword:00000001
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\policy\v2.0]
+"4322"="3706-4322"
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\mono_2.0.reg
+ rm -f "$WINETRICKS_TMP"/mono_2.0.reg
+}
+
+#----------------------------------------------------------------
+
+load_mono24() {
+ # Load Mono, have it handle all .net requests
+ download . http://ftp.novell.com/pub/mono/archive/2.4.2.3/windows-installer/3/mono-2.4.2.3-gtksharp-2.12.9-win32-3.exe 4f0d051bcedd7668e63c12903310be0ea38f9654
+ try $WINE "$WINETRICKS_CACHE"/mono-2.4.2.3-gtksharp-2.12.9-win32-3.exe $WINETRICKS_SILENT
+
+ # FIXME: what should this be for mono 2.4?
+ cat > "$WINETRICKS_TMP"/mono_2.0.reg <<_EOF_
+REGEDIT4
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727]
+"Install"=dword:00000001
+"SP"=dword:00000001
+
+[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\policy\v2.0]
+"4322"="3706-4322"
+_EOF_
+ try_regedit "$WINETRICKS_TMP_WIN"\\mono_2.0.reg
+ rm -f "$WINETRICKS_TMP"/mono_2.0.reg
+}
+
+#----------------------------------------------------------------
+
+load_mozillabuild() {
+ download . http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.4.exe
+ try $WINE "$WINETRICKS_CACHE"/MozillaBuildSetup-1.4.exe $WINETRICKS_S
+}
+
+#----------------------------------------------------------------
+
+load_mpc() {
+ download . $SOURCEFORGE/guliverkli2/Media%20Player%20Classic/6.4.9.1/mplayerc_20090706.zip 9b8e06a3997a786dccfb5739e0cc1a34f17905b6
+ mkdir -p "$programfilesdir_unix/Media Player Classic"
+ cd "$programfilesdir_unix/Media Player Classic"
+ try unzip "$WINETRICKS_CACHE"/mplayerc_20090706.zip
+
+ append_path "$programfilesdir_win"'\\Media Player Classic'
+
+ cd "$olddir"
+ warn "MPC now available as $programfilesdir_win\Media Player Classic\mplayerc.exe"
+}
+
+#----------------------------------------------------------------
+
+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
+ download . http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe e739c40d747e7c27aacdb07b50925b1635ee7366
+
+ # Pick win98 so we can install native msi
+ set_winver win98
+
+ # Avoid "err:setupapi:SetupDefaultQueueCallbackA copy error 5 ..."
+ rm -f "$WINDIR"/system32/msi.dll
+ rm -f "$WINDIR"/system32/msiexec.exe
+
+ WINEDLLOVERRIDES="msi,msiexec.exe=n" try $WINE "$WINETRICKS_CACHE"/InstMSIA.exe $WINETRICKS_QUIET
+
+ override_dlls native,builtin msi msiexec.exe
+
+ # and undo version win98
+ unset_winver
+}
+
+#----------------------------------------------------------------
+
+load_mshflxgd() {
+ # http://msdn.microsoft.com/en-us/library/aa240864(VS.60).aspx
+ # orig: 5f9c7a81022949bfe39b50f2bbd799c448bb7377
+ # Jan 2009: 7ad74e589d5eefcee67fa14e65417281d237a6b6
+ # May 2009: bd8aa796e16e5f213414af78931e0379d9cbe292
+ download . http://activex.microsoft.com/controls/vb6/MSHFLXGD.CAB bd8aa796e16e5f213414af78931e0379d9cbe292
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/MSHFLXGD.CAB
+ try cp -f "$WINETRICKS_TMP"/[Mm][Ss][Hh][Ff][Ll][Xx][Gg][Dd].[Oo][Cc][Xx] "$WINDIR"/system32
+}
+
+#----------------------------------------------------------------
+
+load_msls31() {
+ # Install native Microsoft Line Services (needed by e-Sword, possibly only when using native riched20)
+ download . http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe e739c40d747e7c27aacdb07b50925b1635ee7366
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/InstMsiA.exe
+ try cp -f "$WINETRICKS_TMP"/msls31.dll "$WINDIR"/system32
+}
+
+#----------------------------------------------------------------
+
+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
+ download . http://activex.microsoft.com/controls/vb6/MSMASK32.CAB 30e55679e4a13fe4d9620404476f215f93239292
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/MSMASK32.CAB
+ try cp -f "$WINETRICKS_TMP"/[Mm][Ss][Mm][Aa][Ss][Kk]32.[Oo][Cc][Xx] "$WINDIR"/system32/msmask32.ocx
+ try $WINE regsvr32 msmask32.ocx
+}
+
+#----------------------------------------------------------------
+
+load_mspaint() {
+ # http://helpforlinux.blogspot.com/2008/12/run-ms-paint-in-linux.html
+ download . http://download.microsoft.com/download/winntwks40/paint/1/nt4/en-us/paintnt.exe a22c4e367ef9d2cd23f0a8ae8d9ebff5bc1e8a0b
+ try unzip "$WINETRICKS_CACHE"/paintnt.exe -d "$WINDIR"
+ warn "Paint is now installed to $WINDIR/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
+ download . http://download.microsoft.com/download/d/2/a/d2a7430c-6d5b-48e9-96c4-3c751be7bffe/sct10en.exe fd9f2f23357ab11ae70682d6864f7e9f188adf2a
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/sct10en.exe
+ try cp -f "$WINETRICKS_TMP"/msscript.ocx "$WINDIR"/system32
+ try $WINE regsvr32 msscript.ocx
+}
+
+#----------------------------------------------------------------
+
+load_msxml3() {
+ # Service Pack 5
+ #download http://download.microsoft.com/download/a/5/e/a5e03798-2454-4d4b-89a3-4a47579891d8/msxml3.msi
+ # Service Pack 7
+ download . 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
+ override_dlls native,builtin msxml3
+ try $WINE msiexec /i "$WINETRICKS_CACHE"/msxml3.msi $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+load_msxml4() {
+ # If this is just a dependency check, don't re-install
+ if test $PACKAGE != msxml4 && test -f "$WINDIR"/system32/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
+ # download . 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
+ # download . 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
+ download msxml4sp3 http://download.microsoft.com/download/A/2/D/A2D8587D-0027-4217-9DAD-38AFDB0A177E/msxml.msi aa70c5c1a7a069af824947bcda1d9893a895318b
+
+ try $WINE msiexec /i "$WINETRICKS_CACHE"/msxml4sp3/msxml.msi $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+load_msxml6() {
+ # If this is just a dependency check, don't re-install
+ if test $PACKAGE != msxml6 && test -f "$WINDIR"/system32/msxml6.dll
+ then
+ echo "prerequisite msxml6 already installed, skipping"
+ return
+ fi
+
+ # http://www.microsoft.com/downloads/details.aspx?FamilyID=993c0bcf-3bcf-4009-be21-27e85e1857b1
+ # download . http://download.microsoft.com/download/2/e/0/2e01308a-e17f-4bf9-bf48-161356cf9c81/msxml6.msi 2308743ddb4cb56ae910e461eeb3eab0a9e58058
+ # Service Pack 1
+ # http://www.microsoft.com/downloads/details.aspx?familyid=D21C292C-368B-4CE1-9DAB-3E9827B70604
+ download . http://download.microsoft.com/download/e/a/f/eafb8ee7-667d-4e30-bb39-4694b5b3006f/msxml6_x86.msi
+
+ try $WINE msiexec /i "$WINETRICKS_CACHE"/msxml6_x86.msi $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+load_ogg() {
+ # flac, ogg, speex, vorbis, ogm source, ogg source
+ download . http://cross-lfs.org/~mlankhorst/oggcodecs_0.81.2.exe c9d10a8f1b65b9f3824e227333d66247e14fad4c
+ #try $WINE "$WINETRICKS_CACHE"/oggcodecs_0.81.2.exe $WINETRICKS_QUIET
+ # oh, and the new schroedinger direct show filter, too
+ # see following URLs for more info
+ # http://www.diracvideo.org/
+ # http://cross-lfs.org/~mlankhorst/direct-schro.txt
+ # http://www.diracvideo.org/git?p=direct-schro.git;a=summary
+ # Requires wine-1.1.1
+ download . http://cross-lfs.org/~mlankhorst/direct-schro.dll
+ try cp "$WINETRICKS_CACHE"/direct-schro.dll "$WINDIR"/system32/direct-schro.dll
+ # This is currently broken. Maarten's not sure why.
+ try $WINE regsvr32 direct-schro.dll
+}
+
+#----------------------------------------------------------------
+
+load_ole2() {
+ # http://support.microsoft.com/kb/123087/EN-US/
+ download . http://download.microsoft.com/download/win31/update/2.03/win/en-us/ww1116.exe b803991c40f387464b61f606536b7c98a88245d2
+ try unzip -o $WINETRICKS_UNIXQUIET -d "$WINETRICKS_TMP" "$WINETRICKS_CACHE"/ww1116.exe
+ set_winver win31
+ cd "$WINETRICKS_TMP"
+ try $WINE setup.exe
+ cd "$olddir"
+ unset_winver
+
+ override_dlls native,builtin COMPOBJ.DLL OLE2CONV.DLL OLE2DISP.DLL OLE2.DLL
+ override_dlls native,builtin OLE2NLS.DLL OLE2PROX.DLL STORAGE.DLL TYPELIB.DLL
+}
+
+#----------------------------------------------------------------
+
+load_openwatcom() {
+ # http://www.openwatcom.org
+ download . "http://ftp.openwatcom.org/ftp/open-watcom-c-win32-1.8.exe" 44afd1fabfdf0374f614f054824e60ac560f9dc0
+ if [ $WINETRICKS_QUIET ]
+ 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 "$WINETRICKS_TMP"
+ cp "$WINETRICKS_CACHE"/open-watcom-c-win32-1.8.exe .
+ unzip open-watcom-c-win32-1.8.exe setup.inf
+ sed -i 's/tools16=.*/tools16=true/' setup.inf
+ zip -f open-watcom-c-win32-1.8.exe
+ try $WINE open-watcom-c-win32-1.8.exe -s
+ cd "$olddir"
+ else
+ try $WINE "$WINETRICKS_CACHE"/open-watcom-c-win32-1.8.exe
+ fi
+ if test ! -f "$DRIVE_C"/WATCOM/binnt/wcc.exe
+ then
+ 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
+ download . http://download.microsoft.com/download/platformsdk/Redist/5.0.2195.2668/NT4/EN-US/pdhinst.exe f42448660def8cd7f42b34aa7bc7264745f4425e
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/pdhinst.exe
+ try unzip -o $WINETRICKS_UNIXQUIET -d "$WINETRICKS_TMP" "$WINETRICKS_TMP"/pdh.exe
+ try cp -f "$WINETRICKS_TMP"/x86/Pdh.Dll "$WINDIR"/system32/pdh.dll
+}
+
+#----------------------------------------------------------------
+
+load_physx()
+{
+ # http://www.nvidia.com/object/physx_9.09.0814.html
+ download . http://us.download.nvidia.com/Windows/9.09.0814/PhysX_9.09.0814_SystemSoftware.exe e19f7c3385a4a68e7acb85301bb4d2d0d1eaa1e2
+ try $WINE "$WINETRICKS_CACHE"/PhysX_9.09.0814_SystemSoftware.exe $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+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
+ 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 "$WINETRICKS_CACHE"/psdk2003
+ try $WINE PSDK-x86.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_psdkvista()
+{
+ # http://www.microsoft.com/downloads/details.aspx?familyid=0baf2b35-c656-4969-ace8-e4c0c0716adb
+ warn "Vista SDK doesn't work yet as of wine-1.1.28"
+ load_dotnet20
+ download psdkvista download.microsoft.com/download/c/a/1/ca145d10-e254-475c-85f9-1439f4cd2a9e/Setup.exe 756c21a7fc9b831f7200f3f44ae55cc7689e8063
+ #chmod +x "$WINETRICKS_CACHE"/psdkvista/Setup.exe
+ cd "$WINETRICKS_CACHE"/psdkvista
+ try $WINE Setup.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_psdkwin7()
+{
+ # http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en
+ warn "When given a choice, select only C++ compilers and headers, the other options don't work yet."
+ load_vcrun6
+ load_vcrun2008
+ load_dotnet20
+
+ # 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
+ download psdkwin7 http://download.microsoft.com/download/7/A/B/7ABD2203-C472-4036-8BA0-E505528CCCB7/winsdk_web.exe a01dcc67a38f461e80ea649edf1353f306582507
+ cd "$WINETRICKS_CACHE"/psdkwin7
+ try $WINE winsdk_web.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_python26() {
+
+ # If this is just a dependency check, don't re-install
+ if test $PACKAGE != python26 && test -f "$WINEPREFIX"/drive_c/Python26/python.exe
+ then
+ echo "prerequisite python26 already installed, skipping"
+ return
+ fi
+
+ download . http://www.python.org/ftp/python/2.6.2/python-2.6.2.msi 2d1503b0e8b7e4c72a276d4d9027cf4856b208b8
+ download . $SOURCEFORGE/project/pywin32/pywin32/Build%20214/pywin32-214.win32-py2.6.exe eca58f29b810d8e3e7951277ebb3e35ac35794a3
+ cd "$WINETRICKS_CACHE"
+ try $WINE msiexec /i python-2.6.2.msi ALLUSERS=1 $WINETRICKS_QUIET
+ # FIXME: unzip this instead of running it if quiet install?
+ try $WINE pywin32-214.win32-py2.6.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_python_comtypes() {
+
+ load_python26
+
+ download . $SOURCEFORGE/project/comtypes/comtypes/0.6.1/comtypes-0.6.1-1.zip 814318cdae0ab2471a9cd500847bf12f4df9a57c
+ cd "$WINETRICKS_CACHE"
+ try unzip comtypes-0.6.1-1.zip
+ cd comtypes-0.6.1
+ try $WINE "C:\Python26\python.exe" setup.py install
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_quicktime72() {
+ echo "Quicktime needs gdiplus..."
+ load_gdiplus
+
+ # http://www.apple.com/support/downloads/quicktime72forwindows.html
+ 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 "$WINETRICKS_QUIET"x != x
+ then
+ QUICKTIME_QUIET="/qn" # ISSETUPDRIVEN=0
+ fi
+ # set vista mode to inhibit directdraw overlay use that blacks the screen
+ set_winver vista
+ try $WINE "$WINETRICKS_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 "$WINETRICKS_QUIET"x = x
+ then
+ echo "You probably want to select Advanced / Safe Mode in the Quicktime control panel"
+ try $WINE control "$programfilesdir_win\\QuickTime\\QTSystem\\QuickTime.cpl"
+ fi
+
+ 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
+ download . http://download.microsoft.com/download/winntsp/Patch/RTF/NT4/EN-US/Q249973i.EXE f0b7663f15dbd31410435483ba832318c7a70470
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/Q249973i.EXE
+ try cp -f "$WINETRICKS_TMP"/riched??.dll "$WINDIR"/system32
+ override_dlls native,builtin riched20 riched32
+
+ rm -rf "$WINETRICKS_TMP"/*
+}
+
+#----------------------------------------------------------------
+
+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
+ download . http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe e739c40d747e7c27aacdb07b50925b1635ee7366
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/InstMsiA.exe
+ try cp -f "$WINETRICKS_TMP"/riched20.dll "$WINDIR"/system32
+ override_dlls native,builtin riched20
+
+ rm -rf "$WINETRICKS_TMP"/*
+}
+
+#----------------------------------------------------------------
+
+load_richtx32() {
+ download . http://activex.microsoft.com/controls/vb6/richtx32.cab da404b566df3ad74fe687c39404a36c3e7cadc07
+ try cabextract "$WINETRICKS_CACHE"/richtx32.cab -d "$WINDIR"/system32 -F RichTx32.Ocx
+ try $WINE regsvr32 RichTx32.ocx
+}
+
+#----------------------------------------------------------------
+
+load_shockwave() {
+ # Not silent enough, use msi instead
+ #download . http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/Shockwave_Installer_Full.exe 840e34e9b067cf247bfa9092665b8966158f38e3
+ #try $WINE "$WINETRICKS_CACHE"/Shockwave_Installer_Full.exe $WINETRICKS_S
+ # old sha1sum: 6a91a9da4b54c3fdc97130a15e1a173117e5f4ff
+ # 2009-07-31 sha1sum: 0bb506ef67a268e8d3fb6c7ce556320ee10b9da5
+ # 2009-12-13 sha1sum: d35649883bf13cb1a86f5650e1050d15533ac0f4
+ # 2010-01-23 sha1sum: 4a837d238c28c5f345d73f105711f20c6d059273
+
+ download . http://fpdownload.macromedia.com/get/shockwave/default/english/win95nt/latest/sw_lic_full_installer.msi 4a837d238c28c5f345d73f105711f20c6d059273
+ try $WINE msiexec /i "$WINETRICKS_CACHE"/sw_lic_full_installer.msi $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+load_tahoma() {
+ # The tahoma and tahomabd fonts are needed by e.g. Steam
+
+ download . http://download.microsoft.com/download/office97pro/fonts/1/w95/en-us/tahoma32.exe 888ce7b7ab5fd41f9802f3a65fd0622eb651a068
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/tahoma32.exe
+ try cp -f "$WINETRICKS_TMP"/Tahoma.TTF "$winefontsdir"/tahoma.ttf
+ try cp -f "$WINETRICKS_TMP"/Tahomabd.TTF "$winefontsdir"/tahomabd.ttf
+ chmod +w "$winefontsdir"/tahoma*.ttf
+ rm -rf "$WINETRICKS_TMP"/*
+}
+
+#----------------------------------------------------------------
+
+load_urlmon() {
+ # This is an updated urlmon from IE 6.0
+ # See http://www.microsoft.com/downloads/details.aspx?familyid=85BB441A-5BB1-4A82-86EC-A249AF287513
+ # (Works for Dolphin Smalltalk, see http://bugs.winehq.org/show_bug.cgi?id=8258)
+ download . http://download.microsoft.com/download/8/2/0/820faffc-3ea0-4914-bca3-584235964ded/Q837251.exe bcc79b92ac3c06c4de3692672c3d70bdd36be892
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE/Q837251.exe"
+ try cp -f "$WINETRICKS_TMP"/URLMON.DLL "$WINDIR"/system32/urlmon.dll
+ override_dlls native,builtin urlmon
+}
+
+load_usp10() {
+ # http://www.microsoft.com/downloads/details.aspx?familyid=cebbacd8-c094-4255-b702-de3bb768148f
+ download . http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe e739c40d747e7c27aacdb07b50925b1635ee7366
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE"/InstMsiA.exe
+ try cp -f "$WINETRICKS_TMP"/usp10.dll "$WINDIR"/system32
+ override_dlls native,builtin usp10
+}
+
+#----------------------------------------------------------------
+
+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
+ download . ftp://ftp.microsoft.com/Softlib/MSLFILES/VBRUN200.EXE ac0568b73ee375408778e9b505df995f79ab907e
+ try unzip -o $WINETRICKS_UNIXQUIET -d "$WINETRICKS_TMP" "$WINETRICKS_CACHE"/VBRUN200.EXE
+ try cp -f "$WINETRICKS_TMP/VBRUN200.DLL" "$WINDIR"/system32/
+
+}
+
+#----------------------------------------------------------------
+
+load_vb3run() {
+ # See http://support.microsoft.com/kb/196285
+ download . http://download.microsoft.com/download/vb30/utility/1/w9xnt4/en-us/vb3run.exe 518fcfefde9bf680695cadd06512efadc5ac2aa7
+ try unzip -o $WINETRICKS_UNIXQUIET -d "$WINETRICKS_TMP" "$WINETRICKS_CACHE"/vb3run.exe
+ try cp -f "$WINETRICKS_TMP/Vbrun300.dll" "$WINDIR"/system32/
+
+}
+
+#----------------------------------------------------------------
+
+load_vb4run() {
+ # See http://support.microsoft.com/kb/196286
+ download . http://download.microsoft.com/download/vb40ent/sample27/1/w9xnt4/en-us/vb4run.exe 83e968063272e97bfffd628a73bf0ff5f8e1023b
+ try unzip -o $WINETRICKS_UNIXQUIET -d "$WINETRICKS_TMP" "$WINETRICKS_CACHE"/vb4run.exe
+ try cp -f "$WINETRICKS_TMP/Vb40032.dll" "$WINDIR"/system32/
+ try cp -f "$WINETRICKS_TMP/Vb40016.dll" "$WINDIR"/system32/
+
+}
+
+#----------------------------------------------------------------
+
+load_vbvm50() {
+ download . http://download.microsoft.com/download/vb50pro/utility/1/win98/en-us/msvbvm50.exe 28bfaf09b8ac32cf5ffa81252f3e2fadcb3a8f27
+ try $WINE "$WINETRICKS_CACHE"/msvbvm50.exe $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+load_vbrun60() {
+ if test ! -f "$WINETRICKS_CACHE"/vbrun60sp6.exe
+ then
+ download . http://download.microsoft.com/download/5/a/d/5ad868a0-8ecd-4bb0-a882-fe53eb7ef348/VB6.0-KB290887-X86.exe 73ef177008005675134d2f02c6f580515ab0d842
+ rm -rf "$WINETRICKS_TMP"/*
+
+ try $WINE "$WINETRICKS_CACHE"/VB6.0-KB290887-X86.exe "/T:$winetricks_tmp_win" /c $WINETRICKS_QUIET
+ if test ! -f "$WINETRICKS_TMP"/vbrun60sp6.exe
+ then
+ die vbrun60sp6.exe not found
+ fi
+ try mv "$WINETRICKS_TMP"/vbrun60sp6.exe "$WINETRICKS_CACHE"
+ fi
+
+ # Delete some fake DLLs to ensure that the installer overwrites them.
+ rm -f "$WINDIR"/system32/comcat.dll
+ rm -f "$WINDIR"/system32/oleaut32.dll
+ rm -f "$WINDIR"/system32/olepro32.dll
+ rm -f "$WINDIR"/system32/stdole2.tlb
+ # Exits with status 43 for some reason?
+ $WINE "$WINETRICKS_CACHE"/vbrun60sp6.exe $WINETRICKS_QUIET
+
+ status=$?
+ case $status in
+ 0|43) ;;
+ *) die $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 $PACKAGE != vcrun6 && test -f "$WINDIR"/system32/mfc42u.dll
+ then
+ echo "prerequisite vcrun6 already installed, skipping"
+ return
+ fi
+
+ if test ! -f "$WINETRICKS_CACHE"/vcredist.exe
+ then
+ download . http://download.microsoft.com/download/vc60pro/update/1/w9xnt4/en-us/vc6redistsetup_enu.exe 382c8f5a7f41189af8d4165cf441f274b7e2a457
+ rm -rf "$WINETRICKS_TMP"/*
+
+ try $WINE "$WINETRICKS_CACHE"/vc6redistsetup_enu.exe "/T:$winetricks_tmp_win" /c $WINETRICKS_QUIET
+ if test ! -f "$WINETRICKS_TMP"/vcredist.exe
+ then
+ die vcredist.exe not found
+ fi
+ mv "$WINETRICKS_TMP"/vcredist.exe "$WINETRICKS_CACHE"
+ fi
+ # Delete some fake dlls to avoid vcredist installer warnings
+ rm -f "$WINDIR"/system32/comcat.dll
+ rm -f "$WINDIR"/system32/msvcrt.dll
+ rm -f "$WINDIR"/system32/oleaut32.dll
+ rm -f "$WINDIR"/system32/olepro32.dll
+ rm -f "$WINDIR"/system32/stdole2.tlb
+ # vcredist still exits with status 43. Anyone know why?
+ $WINE "$WINETRICKS_CACHE"/vcredist.exe
+
+ status=$?
+ case $status in
+ 0|43) ;;
+ *) die $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?
+ try cabextract "$WINETRICKS_CACHE"/vcredist.exe -d "$WINDIR"/system32/ -F mfc42u.dll
+
+ override_dlls native,builtin msvcrt
+
+}
+
+#----------------------------------------------------------------
+
+load_vcrun6sp6() {
+ if test ! -f vcredistsp6.exe
+ then
+ 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 try to avoid
+ # overwriting the older vcrun6 redist by renaming the extracted file.
+ try cabextract "$WINETRICKS_CACHE"/Vs6sp6.exe -d "$WINETRICKS_TMP" -F vcredist.exe
+ try mv "$WINETRICKS_TMP"/vcredist.exe "$WINETRICKS_CACHE"/vcredistsp6.exe
+ fi
+
+ # Delete some fake dlls to avoid vcredist installer warnings
+ try rm -f "$WINDIR"/system32/comcat.dll
+ try rm -f "$WINDIR"/system32/msvcrt.dll
+ try rm -f "$WINDIR"/system32/oleaut32.dll
+ try rm -f "$WINDIR"/system32/olepro32.dll
+ try rm -f "$WINDIR"/system32/stdole2.tlb
+ # vcredist still exits with status 43. Anyone know why?
+ $WINE "$WINETRICKS_CACHE"/vcredistsp6.exe
+
+ status=$?
+ case $status in
+ 0|43) ;;
+ *) die $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?
+ try cabextract "$WINETRICKS_CACHE"/vcredistsp6.exe -d "$WINDIR"/system32/ -F mfc42u.dll
+
+ 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)"
+ download . $SOURCEFORGE/bzflag/BZEditW32_1.6.5_Installer.exe bdd1b32c4202fd77e6513fd507c8236888b09121
+ try $WINE "$WINETRICKS_CACHE"/BZEditW32_1.6.5_Installer.exe $WINETRICKS_S
+ try cp "$programfilesdir_unix/BZEdit1.6.5"/m*71* "$WINDIR"/system32/
+}
+
+#----------------------------------------------------------------
+
+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 $PACKAGE != vcrun2005 && test -d "$WINDIR"/winsxs/x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_b77cec8e
+ then
+ echo "prerequisite vcrun2005 already installed, skipping"
+ return
+ fi
+ download vcrun2005-ms09-035 http://download.microsoft.com/download/6/B/B/6BB661D6-A8AE-4819-B79F-236472F6070C/vcredist_x86.exe e052789ebad7dc8d6f8505a9295b0576babd125e
+ cd "$WINETRICKS_CACHE"
+ cd vcrun2005-ms09-035
+ try $WINE vcredist_x86.exe $WINETRICKS_QUIET
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+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 $PACKAGE != vcrun2008 && test -d "$WINDIR"/winsxs/x86_Microsoft.VC90.MFC_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_a57c1f53
+ then
+ echo "prerequisite vcrun2008 already installed, skipping"
+ return
+ fi
+ download vcrun2008-ms09-035 http://download.microsoft.com/download/9/7/7/977B481A-7BA6-4E30-AC40-ED51EB2028F2/vcredist_x86.exe bd18409cfe75b88c2a9432d36d96f4bf125a3237
+ try $WINE "$WINETRICKS_CACHE"/vcrun2008-ms09-035/vcredist_x86.exe $WINETRICKS_QUIET
+
+}
+
+#----------------------------------------------------------------
+
+load_vjrun20() {
+ load_dotnet20
+ # See http://www.microsoft.com/downloads/details.aspx?FamilyId=E9D87F37-2ADC-4C32-95B3-B5E3A21BAB2C
+ download vjrun20 http://download.microsoft.com/download/9/2/3/92338cd0-759f-4815-8981-24b437be74ef/vjredist.exe 80a098e36b90d159da915aebfbfbacf35f302bd8
+ if [ $WINETRICKS_QUIET ]
+ then
+ try $WINE "$WINETRICKS_CACHE"/vjrun20/vjredist.exe /q /C:"install /QNT"
+ else
+ try $WINE vjrun20/vjredist.exe
+ fi
+}
+
+#----------------------------------------------------------------
+
+load_vc2003toolkit()
+{
+ # http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-vc/2679/ANN-Microsoft-Visual-C-Toolkit-2003
+ #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.)
+ download . http://npg.dl.ac.uk/MIDAS/MIDAS_Release/VCToolkitSetup.exe 956c81c3106b97042c4126b23c81885c4b5211f4
+ cd "$WINETRICKS_CACHE"
+ try $WINE VCToolkitSetup.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+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
+ download vc2005express http://download.microsoft.com/download/8/3/a/83aad8f9-38ba-4503-b3cd-ba28c360c27b/ENU/vcsetup.exe 0292ae1d576edd8ee5350a27113c94c9f9958d5c
+
+ if [ $WINETRICKS_QUIET ]
+ 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"
+ download vc2005express http://download.microsoft.com/download/0/5/A/05AA45B9-A4BE-4872-8D57-733DF5297284/Ixpvc.exe ce0da62b5649f33c7a150de276d799fb2d68d12a
+
+ cd "$WINETRICKS_TMP"
+ rm -rf vc2005express.tmp || true
+ mkdir vc2005express.tmp
+ cd vc2005express.tmp
+ cabextract "$WINETRICKS_CACHE"/vc2005express/vcsetup.exe
+ cp "$WINETRICKS_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)
+
+ try $WINE Ixpvc /t:"$WINETRICKS_TMP_WIN\\\\vc2005express.tmp" /q:a /c:"msiexec /i vcsetup.msi VSEXTUI=1 ADDLOCAL=ALL REBOOT=ReallySuppress"
+
+ cd ..
+ rm -rf vc2005express.tmp || true
+ else
+ warn "Don't forget to install the IDE, or mt.exe won't be installed"
+ cd "$WINETRICKS_CACHE"/vc2005express
+ try $WINE vcsetup.exe
+ # The interactive installer seems to be asynchronous, so wait until one of the last files is created
+ while test ! -f "$programfilesdir_unix/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat"
+ do
+ echo "Waiting for install to finish..."
+ sleep 10
+ done
+ fi
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_vc2005expresssp1()
+{
+ warn "$PACKAGE does not work yet"
+ if test ! -f "$programfilesdir_unix/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat"
+ then
+ 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
+ download vc2005express download.microsoft.com/download/7/7/3/7737290f-98e8-45bf-9075-85cc6ae34bf1/VS80sp1-KB926748-X86-INTL.exe 8b9a0172efad64774aa122f29e093ad2043b308d
+ try $WINE "$WINETRICKS_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 "$programfilesdir_unix/$VCD_DIR/vcdmount.exe" && test ! -x "$programfilesdir_x86_unix/$VCD_DIR/vcdmount.exe"
+ then
+ warn "Installing Virtual CloneDrive"
+ download . http://static.slysoft.com/SetupVirtualCloneDrive.exe
+ # have to use cmd else vista won't let cygwin run .exe's?
+ chmod +x "$WINETRICKS_CACHE"/SetupVirtualCloneDrive.exe
+ cd "$WINETRICKS_CACHE"
+ cmd /c SetupVirtualCloneDrive.exe
+ cd "$olddir"
+ fi
+ if test -x "$programfilesdir_unix/$VCD_DIR/vcdmount.exe"
+ then
+ VCD_DIR="$programfilesdir_unix/$VCD_DIR"
+ elif test -x "$programfilesdir_x86_unix/$VCD_DIR/vcdmount.exe"
+ then
+ VCD_DIR="$programfilesdir_x86_unix/$VCD_DIR"
+ else
+ 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 :-(
+ 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 && 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"
+ 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 "$GUI-$DE" in
+ 1-gnome)
+ try gksudo "mkdir -p $ISO_MOUNT_ROOT"
+ try gksudo "mount -o ro,loop $my_img $ISO_MOUNT_ROOT"
+ ;;
+ *)
+ try sudo mkdir -p $ISO_MOUNT_ROOT
+ 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 "$GUI-$DE" in
+ 1-gnome)
+ gksudo "umount $ISO_MOUNT_ROOT"
+ try gksudo "rm -rf $ISO_MOUNT_ROOT"
+ ;;
+ *)
+ sudo umount $ISO_MOUNT_ROOT
+ try sudo rm -rf $ISO_MOUNT_ROOT
+ ;;
+ esac
+ fi
+}
+
+#----------------------------------------------------------------
+
+load_vc2005trial()
+{
+ load_vcrun6
+ load_dotnet20
+ load_msxml6
+ load_vcdmount
+
+ warn "Downloading/checksumming Visual C++ 2005 Trial. This will take some time!"
+ download vc2005trial http://download.microsoft.com/download/6/f/5/6f5f7a01-50bb-422d-8742-c099c8896969/En_vs_2005_vsts_180_Trial.img f66ae07618d67e693ca0524d3582208c20e07823
+
+ iso_umount
+ iso_mount "$WINETRICKS_CACHE"/vc2005trial/En_vs_2005_vsts_180_Trial.img
+
+ # FIXME: do this right
+ rm -f /cygdrive/c/Users/$USER/AppData/local/temp/dd_vsinstall80.txt
+
+ if false && [ $WINETRICKS_QUIET ]
+ then
+ # Thanks to http://blogs.msdn.com/astebner/archive/2005/05/24/421314.aspx for unattended install method
+ # See also http://support.microsoft.com/?kbid=913445
+ die "not implemented yet"
+ else
+ try cd "$ISO_MOUNT_ROOT/vs/Setup"
+ 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
+ cd "$olddir"
+ fi
+
+ iso_umount
+}
+
+#----------------------------------------------------------------
+
+load_vc2005sp1()
+{
+ if test ! -f "$programfilesdir_unix/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat"
+ then
+ 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
+ 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
+ download vc2005sp1 http://download.microsoft.com/download/D/2/3/D23F9F62-3DEE-4EC0-B3B9-D64E9F573D1F/VS80sp1-KB971090-X86-INTL.exe
+ cd "$WINETRICKS_CACHE"/vc2005sp1
+ try $WINE VS80sp1-KB926601-X86-ENU.exe
+ try $WINE VS80sp1-KB971090-X86-INTL.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_one_hotfix()
+{
+ kb=$1
+ downloadid=$2
+ downloadfile=$3
+ hotfix=$4
+
+ cd "$WINETRICKS_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 $WINETRICKS_CACHE_WIN/vs2005hotfixes"
+ sleep 1
+ done
+ if test ! -f $hotfix
+ then
+ unzip -o $downloadfile
+ fi
+ try $WINE $hotfix
+ cd "$olddir"
+}
+
+load_vc2005hotfix()
+{
+ # Loads the hotfixes recommended in http://dev.chromium.org/developers/how-tos/build-instructions-windows#TOC-Additional-free-downloads
+ warn "This does not work in Wine yet."
+ if test ! -f "$programfilesdir_unix/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat"
+ then
+ die "install vc2005trial and vc2005sp1 first"
+ fi
+
+ mkdir -p "$WINETRICKS_CACHE/vs2005hotfixes"
+ case "$OS" in
+ "Windows_NT") $WINE cygstart "$WINETRICKS_CACHE_WIN\\vs2005hotfixes" ;;
+ *) xdg-open "$WINETRICKS_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 "$programfilesdir_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 "$programfilesdir_x86_unix" -xzvf vc8.tgz
+}
+
+#----------------------------------------------------------------
+
+load_vc2008trial()
+{
+ load_vcrun6
+ load_dotnet20
+ load_msxml6
+ load_vcdmount
+
+ warn "Visual C++ 2008 Trial does not yet work in Wine, and this recipe isn't quite debugged even in windows yet."
+ 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
+ download vc2008trial http://download.microsoft.com/download/8/1/d/81d3f35e-fa03-485b-953b-ff952e402520/VS2008ProEdition90dayTrialENUX1435622.iso dfb601096f62fd75af6ad62b277be79793f53b56
+
+ iso_umount
+ iso_mount "$WINETRICKS_CACHE"/vc2008trial/VS2008ProEdition90dayTrialENUX1435622.iso
+
+ # FIXME: do this right
+ rm -f /cygdrive/c/Users/$USER/AppData/local/temp/dd_vsinstall80.txt
+
+ if true
+ then
+ try cd "$ISO_MOUNT_ROOT/Setup"
+ 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
+ cd "$olddir"
+ fi
+
+ iso_umount
+}
+
+#----------------------------------------------------------------
+
+load_vc2008sp1()
+{
+ echo pfdu is ${programfilesdir_unix}
+ echo setting FOO
+ FOO="${programfilesdir_unix}/Microsoft Visual Studio 9.0/Microsoft Visual Studio 2008 Professional Edition - ENU"
+ echo FOO set to $FOO
+ if test ! -d "$FOO"
+ then
+ 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
+ download vc2008sp1 http://download.microsoft.com/download/f/6/7/f67fdf05-0586-413f-8231-affbe12f80a8/VS90sp1-KB945140-ENU.exe 91c146dffa96c6d8f9ceb2b5235b04349cf93ed9
+ cd "$WINETRICKS_CACHE"/vc2008sp1
+ try $WINE VS90sp1-KB945140-ENU.exe
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_vlc() {
+ download . http://www.videolan.org/mirror-geo-redirect.php?file=vlc/0.8.6f/win32/vlc-0.8.6f-win32.exe b83558e4232c47a385dbc93ebdc2e6b942fbcfbf
+ try $WINE "$WINETRICKS_CACHE"/vlc-0.8.6f-win32.exe $WINETRICKS_S
+}
+
+#----------------------------------------------------------------
+
+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
+ download . http://download.microsoft.com/download/ie5/Update/1/WIN98/EN-US/3725.exe b048e0b4e303298de3317b16f7008c43ca71ddfe
+ try cabextract --directory="$WINETRICKS_TMP" "$WINETRICKS_CACHE/3725.exe"
+ try cp -f "$WINETRICKS_TMP"/Wininet.dll "$WINDIR"/system32/wininet.dll
+ override_dlls native,builtin wininet
+}
+
+#----------------------------------------------------------------
+
+load_wme9() {
+ # See also http://www.microsoft.com/downloads/details.aspx?FamilyID=5691ba02-e496-465a-bba9-b2f1182cdf24
+ download wme9 http://download.microsoft.com/download/8/1/f/81f9402f-efdd-439d-b2a4-089563199d47/WMEncoder.exe 7a3f8781f3e5705651992ef0150ee30bc1295116
+
+ try $WINE "$WINETRICKS_CACHE"/wme9/WMEncoder.exe $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+load_wmp9() {
+ # Not really expected to work well yet; see
+ # http://appdb.winehq.org/appview.php?versionId=1449
+
+ load_wsh56
+
+ set_winver win2k
+
+ # See also http://www.microsoft.com/windows/windowsmedia/player/9series/default.aspx
+ download wmp9 http://download.microsoft.com/download/1/b/c/1bc0b1a3-c839-4b36-8f3c-19847ba09299/MPSetup.exe 580536d10657fa3868de2869a3902d31a0de791b
+
+ # Have to run twice; see http://bugs.winehq.org/show_bug.cgi?id=1886
+ try $WINE "$WINETRICKS_CACHE"/wmp9/MPSetup.exe $WINETRICKS_QUIET
+ try $WINE "$WINETRICKS_CACHE"/wmp9/MPSetup.exe $WINETRICKS_QUIET
+
+ # Also install the codecs
+ # See http://www.microsoft.com/downloads/details.aspx?FamilyID=06fcaab7-dcc9-466b-b0c4-04db144bb601
+ download . http://download.microsoft.com/download/5/c/2/5c29d825-61eb-4b16-8eb8-58367d0464d5/WM9Codecs9x.exe 8b76bdcbea0057eb12b7966edab4b942ddacc253
+ try $WINE "$WINETRICKS_CACHE"/WM9Codecs9x.exe $WINETRICKS_QUIET
+
+ # Disable WMP's services, since they depend on unimplemented stuff, they trigger the GUI debugger several times
+ try_regedit /D "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdr4_2K"
+ try_regedit /D "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdralw2k"
+
+ unset_winver
+}
+
+#----------------------------------------------------------------
+
+load_wmp10() {
+ # See http://appdb.winehq.org/appview.php?iVersionId=3212
+
+ load_wsh56
+
+ # See also http://www.microsoft.com/windows/windowsmedia/player/10
+ 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 "$WINETRICKS_CACHE"/MP10Setup.exe $WINETRICKS_QUIET
+ try $WINE "$WINETRICKS_CACHE"/MP10Setup.exe $WINETRICKS_QUIET
+
+ # Also install the codecs
+ # See http://www.microsoft.com/downloads/details.aspx?FamilyID=06fcaab7-dcc9-466b-b0c4-04db144bb601
+ download . http://download.microsoft.com/download/5/c/2/5c29d825-61eb-4b16-8eb8-58367d0464d5/WM9Codecs9x.exe 8b76bdcbea0057eb12b7966edab4b942ddacc253
+ set_winver win2k
+ try $WINE "$WINETRICKS_CACHE"/WM9Codecs9x.exe $WINETRICKS_QUIET
+
+ # Disable WMP's services, since they depend on unimplemented stuff, they trigger the GUI debugger several times
+ try_regedit /D "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdr4_2K"
+ try_regedit /D "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdralw2k"
+
+ 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
+ download . $SOURCEFORGE/wqy/wqy-microhei-0.2.0-beta.tar.gz 28023041b22b6368bcfae076de68109b81e77976
+ cd "$WINETRICKS_TMP/"
+ gunzip -dc "$WINETRICKS_CACHE/wqy-microhei-0.2.0-beta.tar.gz" | tar -xf -
+ try mv wqy-microhei/wqy-microhei.ttc "$winefontsdir"
+ register_font wqy-microhei.ttc "WenQuanYi Micro Hei"
+ cd "$olddir"
+}
+
+#----------------------------------------------------------------
+
+load_wsh56() {
+ # If this is just a dependency check, don't re-install
+ if test $PACKAGE != wsh56 && test -f "$WINDIR"/system32/wscript.exe
+ then
+ echo "prerequisite wsh56 already installed, skipping"
+ return
+ fi
+
+ load_vcrun6
+
+ # See also http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=C717D943-7E4B-4622-86EB-95A22B832CAA
+ download . http://download.microsoft.com/download/2/8/a/28a5a346-1be1-4049-b554-3bc5f3174353/WindowsXP-Windows2000-Script56-KB917344-x86-enu.exe f4692766caa3ee9b38d4166845486c6199a33457
+
+ try $WINE "$WINETRICKS_CACHE"/WindowsXP-Windows2000-Script56-KB917344-x86-enu.exe $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+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
+ download . http://download.microsoft.com/download/b/c/3/bc3a0c36-fada-497d-a3de-8b0139766f3b/Windows2000-KB917344-56-x86-enu.exe add5f74c5bd4da6cfae47f8306de213ec6ed52c8
+
+ try $WINE "$WINETRICKS_CACHE"/Windows2000-KB917344-56-x86-enu.exe $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+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
+ download . http://download.microsoft.com/download/IE60/Patch/Q318089/W9XNT4Me/EN-US/vbs56men.exe 48f14a93db33caff271da0c93f334971f9d7cb22
+
+ try $WINE "$WINETRICKS_CACHE"/vbs56men.exe $WINETRICKS_QUIET
+}
+
+#----------------------------------------------------------------
+
+load_xact() {
+ helper_directx_dl ;
+
+ # xactengine?_?.dll, X3DAudio?_?.dll, xaudio?_?.dll, xapofx?_?.dll - extract
+ cabextract -d "$WINETRICKS_TMP" -L -F '*_xact_*x86*' "$WINETRICKS_CACHE"/$DIRECTX_NAME
+ cabextract -d "$WINETRICKS_TMP" -L -F '*_x3daudio_*x86*' "$WINETRICKS_CACHE"/$DIRECTX_NAME
+ cabextract -d "$WINETRICKS_TMP" -L -F '*_xaudio_*x86*' "$WINETRICKS_CACHE"/$DIRECTX_NAME
+ for x in `ls "$WINETRICKS_TMP"/*.cab`
+ do
+ cabextract -d "$WINDIR"/system32 -L -F '*.dll' "$x"
+ done
+
+ # xactengine?_?.dll, xaudio?_?.dll - register
+ for x in `ls "$WINDIR"/system32/xactengine* "$WINDIR"/system32/xaudio*`
+ do
+ try $WINE regsvr32 `basename $x`
+ done
+}
+
+#----------------------------------------------------------------
+
+load_xvid() {
+ # xvid
+ load_vcrun6
+ download . http://www.koepi.info/Xvid-1.2.2-07062009.exe 435203e7f713c4484ca4f50f43e847f3dc118962
+ try $WINE "$WINETRICKS_CACHE"/Xvid-1.2.2-07062009.exe $WINETRICKS_SILENT
+}
+
+#----------------------------------------------------------------
+
+print_version() {
+ echo "$VERSION"
+}
+
+#--------- Main program -----------------------------------------
+
+# On Solaris, choose more modern commands (needed for id -u).
+case `uname -s` in
+SunOS) PATH="/usr/xpg6/bin:/usr/xpg4/bin:$PATH"
+ ;;
+esac
+
+case "$1" in
+-V|--version)
+ echo "Winetricks version $VERSION. (C) 2007-2009 Dan Kegel et al. LGPL."
+ exit 0
+ ;;
+esac
+
+detectDE
+
+GUI=0
+case x"$1" in
+x) GUI=1 ;;
+x-h|x--help|xhelp) usage ; exit 1 ;;
+esac
+
+case "$OS" in
+ "Windows_NT")
+ ;;
+ *)
+ # Prevent running with wrong user id.
+ # It's bad to create files as the wrong user!
+ die_if_user_not_dirowner "$WINEPREFIX"
+ die_if_user_not_dirowner "$WINETRICKS_CACHE"
+
+ if [ ! -x "`which "$WINE"`" ]
+ then
+ die "Cannot find wine ($WINE)"
+ fi
+
+ # Create wineprefix if not already there
+ test -d "$WINEPREFIX" || WINEDLLOVERRIDES=mshtml= $WINE cmd /c echo yes > /dev/null 2>&1
+ ;;
+esac
+
+mkdir -p "$WINETRICKS_TMP"
+
+case $GUI in
+1) dogui ; set $todo ;;
+esac
+
+mkdir -p "$WINETRICKS_CACHE"
+olddir=`pwd`
+# Clean up after failed runs, if needed
+rm -rf "$WINETRICKS_TMP"/*
+
+# The folder-name is localized!
+programfilesdir_win="`unset WINEDEBUG; WINEDLLOVERRIDES=mshtml= $WINE cmd.exe /c echo "%ProgramFiles%" | tr -d '\015'`"
+test x"$programfilesdir_win" != x || die "$WINE cmd.exe /c echo '%ProgramFiles%' returned empty string"
+programfilesdir_unix="`unset WINEDEBUG; $XXXPATH -u "$programfilesdir_win" | tr -d '\015' `"
+test x"$programfilesdir_unix" != x || die "winepath -u $programfilesdir_win returned empty string"
+winetricks_tmp_win="`$XXXPATH -w "$WINETRICKS_TMP"`"
+
+# 64 bit windows has a second directory for program files
+programfilesdir_x86_win="${programfilesdir_win} (x86)"
+programfilesdir_x86_unix="${programfilesdir_unix} (x86)"
+if ! test -d "$programfilesdir_x86_unix"
+then
+ programfilesdir_x86_win="${programfilesdir_win}"
+ programfilesdir_x86_unix="${programfilesdir_unix}"
+fi
+
+# (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 "$WINDIR"/Fonts && test -d "$WINDIR"/fonts
+then
+ winefontsdir="$WINDIR"/fonts
+else
+ winefontsdir="$WINDIR"/Fonts
+fi
+
+# Mac folks tend to not have sha1sum, but we can make do with openssl
+if [ -x "`which sha1sum`" ]
+then
+ SHA1SUM="sha1sum"
+elif [ -x "`which openssl`" ]
+then
+ SHA1SUM="openssl dgst -sha1"
+else
+ die "No sha1sum utility available."
+fi
+
+if [ ! -x "`which cabextract`" ]
+then
+ die "Cannot find cabextract. Please install it (e.g. 'sudo apt-get install cabextract' or 'sudo yum install cabextract')."
+fi
+
+if [ ! -x "`which unzip`" ]
+then
+ die "Cannot find unzip. Please install it (e.g. 'sudo apt-get install unzip' or 'sudo yum install unzip')."
+fi
+
+while test "$1" != ""
+do
+ PACKAGE=$1
+ case $1 in
+ -q) WINETRICKS_QUIET="/q"
+ WINETRICKS_QUIET_T="/qt" # Microsoft Control Pad
+ WINETRICKS_UNIXQUIET="-q"
+ WINETRICKS_SILENT="/silent"
+ WINETRICKS_S="/S" # for NSIS installers
+ WINEDEBUG=${WINEDEBUG:-"fixme-all"}
+ export WINEDEBUG
+ ;;
+ -v) set -x;;
+ art2kmin|art2k7min) load_art2kmin;;
+ atmlib) load_atmlib;;
+ autohotkey|ahk) load_autohotkey;;
+ cmake) load_cmake;;
+ comctl32.ocx) load_comctl32ocx;;
+ comctl32|cc580) load_cc580;;
+ colorprofile) load_colorprofile;;
+ controlpad|fm20) load_controlpad;;
+ corefonts) load_corefonts;;
+ cygwin) load_cygwin;;
+ d3dx9) load_d3dx9;;
+ d3dx10) load_d3dx10;;
+ dcom98) load_dcom98;;
+ dinput8) load_dinput8;;
+ dirac|dirac0.8) load_dirac08;;
+ directplay|dxplay|dplay) load_directplay;;
+ directx9) DIRECTX_WINDOWS=win2k ; load_directx9;;
+ directx9-beta) DIRECTX_WINDOWS=winxp ; load_directx9;;
+ divx) load_divx;;
+ dotnet1|dotnet11) load_dotnet11; load_fontfix;;
+ dotnet11sdk) load_dotnet11sdk;;
+ dotnet2|dotnet20) load_dotnet20;;
+ dotnet20sdk) load_dotnet20sdk;;
+ dotnet20sp2) load_dotnet20sp2; load_fontfix;;
+ dotnet3|dotnet30) load_dotnet30; load_fontfix;;
+ dotnet35) load_dotnet35; load_fontfix;;
+ droid) load_droid;;
+ ffdshow) load_ffdshow;;
+ firefox|firefox3) load_firefox;;
+ flash) load_flash;;
+ fontfix) load_fontfix;;
+ fontsmooth-bgr|fs-bgr) load_fs_bgr;;
+ fontsmooth-disable|fs-disable) load_fs_disable;;
+ fontsmooth-gray|fontsmooth-grayscale|fontsmooth-enable|fs-enable) load_fs_grayscale;;
+ fontsmooth-rgb|fs-rgb|fs-cleartype) load_fs_rgb;;
+ gdiplus) load_gdiplus;;
+ gecko) load_gecko;;
+ gecko-dbg|geckodbg|gecko_dbg|geckodebug|gecko_debug|gecko-debug) load_gecko_dbg;;
+ glsl-disable) load_glsl_disable;;
+ glsl-enable) load_glsl_enable;;
+ hosts) load_hosts;;
+ icodecs) load_icodecs;;
+ ie6) load_ie6;;
+ ie7) load_ie7;;
+ jet40) load_jet40;;
+ kde) load_kde;;
+ liberation) load_liberation;;
+ mdac25) load_mdac25;;
+ mdac27) load_mdac27;;
+ mdac28) load_mdac28;;
+ mfc40) load_mfc40;;
+ mingw|mingw-min|mingw_min) load_mingw_min;;
+ mingw-gdb|mingw_gdb) load_mingw_gdb;;
+ mono19|mono20) load_mono20;;
+ mono22) load_mono22;;
+ mono24) load_mono24;;
+ mozillabuild) load_mozillabuild;;
+ mpc) load_mpc;;
+ msi2) load_msi2;;
+ mshflxgd) load_mshflxgd;;
+ msls31) load_msls31;;
+ msmask) load_msmask;;
+ mspaint|paint) load_mspaint;;
+ msscript) load_msscript;;
+ msxml3) load_msxml3;;
+ msxml4) load_msxml4;;
+ msxml6) load_msxml6;;
+ ogg) load_ogg;;
+ ole2) load_ole2;;
+ openwatcom|watcom) load_openwatcom;;
+ pdh) load_pdh;;
+ physx) load_physx;;
+ psdk2003) load_psdk2003;;
+ psdkvista) load_psdkvista;;
+ psdkwin7) load_psdkwin7;;
+ python|python26) load_python26;;
+ python-comtypes|pythoncom|python-com|pythoncomtypes) load_python_comtypes;;
+ quicktime72) load_quicktime72;;
+ riched20) load_riched20;;
+ riched30) load_riched30;;
+ richtx32) load_richtx32;;
+ shockwave) load_shockwave;;
+ tahoma) load_tahoma;;
+ urlmon) load_urlmon;;
+ usp10) load_usp10;;
+ vbrun200|vb2run) load_vb2run;;
+ vbrun300|vb3run) load_vb3run;;
+ vbrun400|vb4run) load_vb4run;;
+ vbrun500|vbvm50|vb5run) load_vbvm50;;
+ vbrun600|vbrun60|vb6run) load_vbrun60;;
+ vc2003toolkit) load_vc2003toolkit;;
+ vc2005express) load_vc2005express;;
+ vc2005expresssp1) load_vc2005expresssp1;;
+ vc2005hotfix) load_vc2005hotfix;;
+ vc2005load) load_vc2005_tarball;;
+ vc2005save) save_vc2005_tarball;;
+ vc2005sp1) load_vc2005sp1;;
+ vc2008sp1) load_vc2008sp1;;
+ vc2005trial) load_vc2005trial;;
+ vc2008trial) load_vc2008trial;;
+ vcrun600|vcrun60|vcrun6|mfc42) load_vcrun6;;
+ vcrun60sp6|vcrun6sp6) load_vcrun6sp6;;
+ vcrun2003) load_vcrun2003;;
+ vcrun2005|vcrun2005sp1) load_vcrun2005;;
+ vcrun2008|vcrun2008sp1) load_vcrun2008;;
+ vjrun20) load_vjrun20;;
+ vlc) load_vlc;;
+ wenquanyi) load_wenquanyi;;
+ wininet) load_wininet;;
+ wme9) load_wme9;;
+ wmp9) load_wmp9;;
+ wmp10) load_wmp10;;
+ wsh56) load_wsh56;;
+ wsh56js) load_wsh56js;;
+ wsh56vb) load_wsh56vb;;
+ xact|xactengine|x3daudio) load_xact;;
+ xvid) load_xvid;;
+
+ allcodecs|allvcodecs) load_vcrun6; load_ffdshow; load_xvid; load_icodecs;;
+ allfonts) load_corefonts; load_tahoma; load_liberation; load_droid; load_wenquanyi;;
+ ddr=gdi) set_ddr gdi;;
+ ddr=opengl) set_ddr opengl;;
+ fakeie6) set_fakeie6;;
+ heapcheck) set_heapcheck;;
+ multisampling=enabled|multisampling=on) set_multisampling enabled;;
+ multisampling=disabled|multisampling=off) set_multisampling disabled;;
+ native_mdac) set_native_mdac;;
+ native_oleaut32) override_dlls native,builtin oleaut32;;
+ nocrashdialog) disable_crashdialog;;
+ orm=backbuffer|backbuffer) set_orm backbuffer;;
+ orm=fbo|fbo) set_orm fbo;;
+ orm=pbuffer|pbuffer) set_orm pbuffer;;
+ 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=audioio|audioio) set_sound_driver audioio;;
+ sound=coreaudio|coreaudio) set_sound_driver coreaudio;;
+ sound=esound|esound) set_sound_driver esound;;
+ 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 "";;
+ version) print_version;;
+ volnum) volnum;;
+ winver=nt40|nt40) set_winver nt40;;
+ winver=win98|win98) set_winver win98;;
+ winver=win2k|win2k) set_winver win2k;;
+ winver=winxp|winxp) set_winver winxp;;
+ winver=vista|vista) set_winver vista;;
+ winver=) unset_winver;;
+ *) echo Unknown arg $1; usage ; exit 1;;
+ esac
+ # Provide a bit of feedback
+ test "$WINETRICKS_QUIET" = "" && case $1 in
+ -q) echo Setting quiet mode;;
+ -v) echo Setting verbose mode;;
+ *) echo "Install of $1 done" ;;
+ esac
+ shift
+ # cleanup
+ rm -rf "$WINETRICKS_TMP"/*
+done
+
+ # remove the temp directory
+ rm -rf "$WINETRICKS_TMP"
+
+test "$WINETRICKS_QUIET" = "" && echo winetricks done. || true