From 7455ac7d054b2612600fee950e24f50d47eb4eca Mon Sep 17 00:00:00 2001 From: David Parsons Date: Mon, 9 Oct 2017 18:36:59 +0100 Subject: [PATCH] Final changes for 2.0.9! --- .gitignore | 5 +++-- readme.txt | 32 ++++++++++++++++---------------- unlocker.exe | Bin 3915503 -> 3915420 bytes 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 36e94c3..34af2c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ backup/ tools/ .idea/ -pyinstaller/ samples/ tests/ - +build/ +dist/ +*.spec diff --git a/readme.txt b/readme.txt index 2f94c2f..b190bb3 100644 --- a/readme.txt +++ b/readme.txt @@ -20,34 +20,34 @@ If you are using an earlier product please continue using Unlocker 1 Version 2 has been tested against: -* Workstation 11/12 on Windows and Linux -* Player 7 & Workstation Player 12 on Windows and Linux -* Fusion 7/8 on El Capitan and Sierra -* ESXi 6.0/6.5 +* Workstation 11/12/14 on Windows and Linux +* Workstation Player 7/12/14 on Windows and Linux +* Fusion 7/8/10 on Sierra +* ESXi 6.5U1 The patch code carries out the following modifications dependent on the product being patched: -* Fix vmware-vmx and derivatives to allow Mac OS X to boot +* Fix vmware-vmx and derivatives to allow macOS to boot * Fix vmwarebase .dll or .so to allow Apple to be selected during VM creation * Fix libvmkctl.so on ESXi 6 to allow use with vCenter -* Download a copy of the latest VMware Tools for OS X +* Download a copy of the latest VMware Tools for macOS Note that not all products recognise the darwin.iso via install tools menu item. You will have to manually mount the darwin.iso for example on Workstation 11 and Player 7. -The vmwarebase code does not need to be patched on OS X or ESXi so you will see a +The vmwarebase code does not need to be patched on macOS or ESXi so you will see a message on those systems telling you that it will not be patched. In all cases make sure VMware is not running, and any background guests have been shutdown. -The code written in Python as it makes the Unlocker easier to run and maintain on ESXi. +The code is written in Python as it makes the Unlocker easier to run and maintain on ESXi. 2. Prerequisites ---------------- -The code requires Python 2.7 to work. Most Linux distros, ESXi and OS X ship with a compatible +The code requires Python 2.7 to work. Most Linux distros, ESXi and macOS ship with a compatible Python interpreter and should work without requiring any additional software. Windows Unlocker has a packaged version of the Python script using PyInstaller, and so does not @@ -80,7 +80,7 @@ Explorer right click on the command file and select "Run as administrator". win-install.cmd - patches VMware win-uninstall.cmd - restores VMware -win-update-tools.cmd - retrieves latest OS X guest tools +win-update-tools.cmd - retrieves latest macOS guest tools 5. Linux --------- @@ -91,14 +91,14 @@ by running chmod +x against the 2 files. lnx-install.sh - patches VMware lnx-uninstall.sh - restores VMware -lnx-update-tools.cmd - retrieves latest OS X guest tools +lnx-update-tools.cmd - retrieves latest macOS guest tools -6. Mac OS X ------------ -On Mac OS X you will need to be either root or use sudo to run the scripts. -This is really only needed if you want to use client versions of Mac OS X. +6. macOS +-------- +On macOS you will need to be either root or use sudo to run the scripts. +This is really only needed if you want to use client versions of macOS. -You may need to ensure the OS X scripts have execute permissions +You may need to ensure the macOS scripts have execute permissions by running chmod +x against the 2 files. osx-install.sh - patches VMware diff --git a/unlocker.exe b/unlocker.exe index 1e4ca779e049fd8290ed495f327b61e47799aff6..d5de277a23a5242f2622436eb10f0c203d37bc37 100755 GIT binary patch delta 5516 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 delta 5599 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