From 253b8b40a0577fd13fd1625e895cd3a6e527604f Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Sun, 22 Oct 2023 13:48:05 -0400 Subject: [PATCH 1/5] Update WINDOWS.md --- docs/WINDOWS.md | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/docs/WINDOWS.md b/docs/WINDOWS.md index 1f314fc15..1feeb7fa5 100644 --- a/docs/WINDOWS.md +++ b/docs/WINDOWS.md @@ -5,21 +5,20 @@ Many older Macs do not "officially" support UEFI Windows installations, leading ## Minimum Requirements -This guide will focus on the installation of Windows 10 without using Boot Camp Assistant. Windows 11 should also work, but its quirks will not be covered. +This guide will focus on the installation of modern Windows (10/11) without using Boot Camp Assistant. * Due to hardware and firmware limitations, UEFI Windows installations are only recommended on the following machines: - * 2015 MacBook or newer (MacBook8,x+) - * 2011 MacBook Air or newer (MacBookAir4,x+) - * 2011 MacBook Pro or newer (MacBookPro8,x+) - * 2011 Mac mini or newer (Macmini5,x+) - * 2009[^1] Mac Pro or newer (MacPro4,1+), upgraded GPU is preferred - * 2010 iMac or newer (iMac11,x+), upgraded GPU is preferred - * 2009[^2] Xserve (Xserve3,1), upgraded GPU is preferred + * 2015 MacBook or newer (`MacBook8,x`+) + * 2011 MacBook Air or newer (`MacBookAir4,x`+) + * 2011 MacBook Pro or newer (`MacBookPro8,x`+) + * 2011 Mac mini or newer (`Macmini5,x`+) + * 2009* Mac Pro or newer (`MacPro4,1`+), upgraded GPU is preferred + * 2010 iMac or newer (`iMac11,x`+), upgraded GPU is preferred + * 2009[^2] Xserve (`Xserve3,1`), upgraded GPU is preferred -[^1]: MacPro4,1 and MacPro5,1 systems experience issues with the Windows installer, follow the DISM installation section for instructions. -[^2]: Theoretically supported, not tested. Follow DISM installation section +*`MacPro4,1`, `MacPro5,1`, and `Xserve3,1` systems experience issues with the Windows installer, follow the DISM installation section for instructions. If your machine is not listed, UEFI Windows will likely still install, but you may face stability/driver issues. @@ -87,18 +86,26 @@ The `rsync` command will take some time, so get some coffee and sit back. Once f ## Installation Process -Once you reboot your machine, you should see a new boot option in the OCLP Bootpicker labelled as "EFI Boot". It may or may not have the Boot Camp icon. +Once you reboot your machine, you should see a new boot option in the OCLP Bootpicker labelled as "EFI Boot" or "Windows". It may or may not have the Boot Camp icon. :::warning -If you aren't booted into OCLP, you may see two boot options labelled "Windows" and "EFI Boot". Do not choose either of the options and boot into OCLP to continue. +If you aren't booted into OCLP, you may see **two** boot options labelled "Windows" and "EFI Boot". Do not choose either of the options and boot into OCLP to continue. ::: + + ### Installation: Microsoft Method Once booted into the Windows installer, proceed as you normally would on any Windows computer. If you see an error message containing “Windows could not prepare the computer to boot into the next phase of installation”, please follow the next portion of this guide (DISM Installation). +::: details Installing Windows 11 + +If you are installing Windows 11, you will need to [modify the Windows Setup](https://www.bleepingcomputer.com/news/microsoft/how-to-bypass-the-windows-11-tpm-20-requirement/) to allow installation on unsupported machines. + +::: + ### Installation: DISM Deployment Method Once booted into the Windows installer, proceed as you normally would until you reach the "Where do you want to install Windows" disk formatting section. @@ -132,7 +139,7 @@ Once `dism` finishes its thing, run `bcdboot E:\Windows`, substituting "E" for t ![](../images/DISM-7.png) -Windows is now installed. It should be recognized as "EFI Boot" with a Boot Camp icon in the OCLP Bootpicker. +Windows is now installed. It should be recognized as "EFI Boot" or "Windows" with a Boot Camp icon in the OCLP Bootpicker. :::warning @@ -221,4 +228,8 @@ You can also open `Properties` on the file to change the compatibility to `Previ ### iMac12,x Bluescreen after driver installation -Currently Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. The recommended solution is to simply disable the iGPU: [iMac 12,1 Windows 10 Boot Loop – Fix Intel Graphics issue](https://zzq.org/?p=39) +Intel's iGPU drivers for the HD 3000 series do not support UEFI booting in Windows. The recommended solution is to simply disable the iGPU: [iMac 12,1 Windows 10 Boot Loop – Fix Intel Graphics issue](https://zzq.org/?p=39) + +### NVIDIA Tesla Black Screen after driver installation + +The NVIDIA Tesla GPUs found in 2008-2010 Macs do not support UEFI booting in Windows. You cannot use UEFI Windows without low-level patching on these machines. \ No newline at end of file From de7d024c8f4dfc3e9c03718d9bb948bf8b86e51d Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Sun, 22 Oct 2023 13:49:30 -0400 Subject: [PATCH 2/5] Fix change --- docs/WINDOWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/WINDOWS.md b/docs/WINDOWS.md index 1feeb7fa5..b9a5c0fc1 100644 --- a/docs/WINDOWS.md +++ b/docs/WINDOWS.md @@ -15,7 +15,7 @@ This guide will focus on the installation of modern Windows (10/11) without usin * 2011 Mac mini or newer (`Macmini5,x`+) * 2009* Mac Pro or newer (`MacPro4,1`+), upgraded GPU is preferred * 2010 iMac or newer (`iMac11,x`+), upgraded GPU is preferred - * 2009[^2] Xserve (`Xserve3,1`), upgraded GPU is preferred + * 2009* Xserve (`Xserve3,1`), upgraded GPU is preferred *`MacPro4,1`, `MacPro5,1`, and `Xserve3,1` systems experience issues with the Windows installer, follow the DISM installation section for instructions. From 173f77cc31e86e889d91fa720d6cffa5059bf5c8 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Mon, 23 Oct 2023 13:41:03 -0400 Subject: [PATCH 3/5] Follow semver --- resources/sys_patch/sys_patch_auto.py | 10 +++++----- resources/wx_gui/gui_entry.py | 2 +- resources/wx_gui/gui_main_menu.py | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/sys_patch/sys_patch_auto.py b/resources/sys_patch/sys_patch_auto.py index d6276de29..8817f0dd0 100644 --- a/resources/sys_patch/sys_patch_auto.py +++ b/resources/sys_patch/sys_patch_auto.py @@ -84,9 +84,9 @@ class AutomaticSysPatch: @media (prefers-color-scheme: dark) { body { color: #fff; - background-color: rgb(47,47,47); + background-color: rgb(47,47,47); } - + } """ @@ -97,7 +97,7 @@ class AutomaticSysPatch: sizer = wx.BoxSizer(wx.VERTICAL) sizer.AddSpacer(10) self.title_text = wx.StaticText(panel, label="A new version of OpenCore Legacy Patcher is available!") - self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {version} is now available - You have {self.constants.patcher_version}. Would you like to update?") + self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {version} is now available - You have {self.constants.patcher_version}{'-nightly' if not self.constants.commit_info[0].startswith('refs/tags') else ''}. Would you like to update?") self.title_text.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont")) self.description.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont")) self.web_view = wx.html2.WebView.New(panel, style=wx.BORDER_SUNKEN) @@ -126,14 +126,14 @@ class AutomaticSysPatch: frame.Centre() result = frame.ShowModal() - + if result == ID_GITHUB: webbrowser.open(dict["Github Link"]) elif result == ID_UPDATE: gui_entry.EntryPoint(self.constants).start(entry=gui_entry.SupportedEntryPoints.UPDATE_APP) - + return if utilities.check_seal() is True: diff --git a/resources/wx_gui/gui_entry.py b/resources/wx_gui/gui_entry.py index f7d2764cf..070ca349f 100644 --- a/resources/wx_gui/gui_entry.py +++ b/resources/wx_gui/gui_entry.py @@ -58,7 +58,7 @@ class EntryPoint: self.frame: wx.Frame = entry( None, - title=f"{self.constants.patcher_name} ({self.constants.patcher_version})", + title=f"{self.constants.patcher_name} {self.constants.patcher_version}{'-nightly' if not self.constants.commit_info[0].startswith('refs/tags') else ''}", global_constants=self.constants, screen_location=None, **({"patches": patches} if "--gui_patch" in sys.argv or "--gui_unpatch" in sys.argv else {}) diff --git a/resources/wx_gui/gui_main_menu.py b/resources/wx_gui/gui_main_menu.py index d235bf69c..2c9a27ddc 100644 --- a/resources/wx_gui/gui_main_menu.py +++ b/resources/wx_gui/gui_main_menu.py @@ -70,7 +70,7 @@ class MainFrame(wx.Frame): """ # Title label: OpenCore Legacy Patcher v{X.Y.Z} - title_label = wx.StaticText(self, label=f"OpenCore Legacy Patcher {'' if self.constants.special_build else 'v'}{self.constants.patcher_version}", pos=(-1, 10)) + title_label = wx.StaticText(self, label=f"OpenCore Legacy Patcher {'' if self.constants.special_build else ''}{self.constants.patcher_version}{'-nightly' if not self.constants.commit_info[0].startswith('refs/tags') else ''}", pos=(-1, 10)) title_label.SetFont(gui_support.font_factory(19, wx.FONTWEIGHT_BOLD)) title_label.Centre(wx.HORIZONTAL) @@ -379,7 +379,7 @@ class MainFrame(wx.Frame): sizer = wx.BoxSizer(wx.VERTICAL) sizer.AddSpacer(10) self.title_text = wx.StaticText(panel, label="A new version of OpenCore Legacy Patcher is available!") - self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {oclp_version} is now available - You have {self.constants.patcher_version}. Would you like to update?") + self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {oclp_version} is now available - You have {self.constants.patcher_version}{'-nightly' if not self.constants.commit_info[0].startswith('refs/tags') else ''}. Would you like to update?") self.title_text.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont")) self.description.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont")) self.web_view = wx.html2.WebView.New(panel, style=wx.BORDER_SUNKEN) From f91c817fce3c0b37bcfbb9ad977c64aa66809432 Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Mon, 23 Oct 2023 14:22:42 -0400 Subject: [PATCH 4/5] Fix crash when rate limited, nightly naming chng. --- resources/sys_patch/sys_patch_auto.py | 13 +++++++++---- resources/wx_gui/gui_entry.py | 2 +- resources/wx_gui/gui_main_menu.py | 28 ++++++++++++++++----------- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/resources/sys_patch/sys_patch_auto.py b/resources/sys_patch/sys_patch_auto.py index 8817f0dd0..683ff6035 100644 --- a/resources/sys_patch/sys_patch_auto.py +++ b/resources/sys_patch/sys_patch_auto.py @@ -62,7 +62,12 @@ class AutomaticSysPatch: url = "https://api.github.com/repos/dortania/OpenCore-Legacy-Patcher/releases/latest" response = requests.get(url).json() - changelog = response["body"].split("## Asset Information")[0] + try: + changelog = response["body"].split("## Asset Information")[0] + except: #if user constantly checks for updates, github will rate limit them + changelog = """## Unable to fetch changelog + +Please check the Github page for more information about this release.""" html_markdown = markdown2.markdown(changelog) html_css = """ @@ -90,14 +95,14 @@ class AutomaticSysPatch: } """ - frame = wx.Dialog(None, -1, title="", size=(600, 500)) - frame.SetMinSize((600, 500)) + frame = wx.Dialog(None, -1, title="", size=(650, 500)) + frame.SetMinSize((650, 500)) frame.SetWindowStyle(wx.STAY_ON_TOP) panel = wx.Panel(frame) sizer = wx.BoxSizer(wx.VERTICAL) sizer.AddSpacer(10) self.title_text = wx.StaticText(panel, label="A new version of OpenCore Legacy Patcher is available!") - self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {version} is now available - You have {self.constants.patcher_version}{'-nightly' if not self.constants.commit_info[0].startswith('refs/tags') else ''}. Would you like to update?") + self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {version} is now available - You have {self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}. Would you like to update?") self.title_text.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont")) self.description.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont")) self.web_view = wx.html2.WebView.New(panel, style=wx.BORDER_SUNKEN) diff --git a/resources/wx_gui/gui_entry.py b/resources/wx_gui/gui_entry.py index 070ca349f..c15791d71 100644 --- a/resources/wx_gui/gui_entry.py +++ b/resources/wx_gui/gui_entry.py @@ -58,7 +58,7 @@ class EntryPoint: self.frame: wx.Frame = entry( None, - title=f"{self.constants.patcher_name} {self.constants.patcher_version}{'-nightly' if not self.constants.commit_info[0].startswith('refs/tags') else ''}", + title=f"{self.constants.patcher_name} {self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}", global_constants=self.constants, screen_location=None, **({"patches": patches} if "--gui_patch" in sys.argv or "--gui_unpatch" in sys.argv else {}) diff --git a/resources/wx_gui/gui_main_menu.py b/resources/wx_gui/gui_main_menu.py index 2c9a27ddc..8a6244b01 100644 --- a/resources/wx_gui/gui_main_menu.py +++ b/resources/wx_gui/gui_main_menu.py @@ -70,7 +70,7 @@ class MainFrame(wx.Frame): """ # Title label: OpenCore Legacy Patcher v{X.Y.Z} - title_label = wx.StaticText(self, label=f"OpenCore Legacy Patcher {'' if self.constants.special_build else ''}{self.constants.patcher_version}{'-nightly' if not self.constants.commit_info[0].startswith('refs/tags') else ''}", pos=(-1, 10)) + title_label = wx.StaticText(self, label=f"OpenCore Legacy Patcher {'' if self.constants.special_build else ''}{self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}", pos=(-1, 10)) title_label.SetFont(gui_support.font_factory(19, wx.FONTWEIGHT_BOLD)) title_label.Centre(wx.HORIZONTAL) @@ -278,16 +278,17 @@ class MainFrame(wx.Frame): return ignore_updates = global_settings.GlobalEnviromentSettings().read_property("IgnoreAppUpdates") - if ignore_updates is True: - self.constants.ignore_updates = True - return + #if ignore_updates is True: + # self.constants.ignore_updates = True + # return self.constants.ignore_updates = False self.constants.has_checked_updates = True - dict = updates.CheckBinaryUpdates(self.constants).check_binary_updates() - if not dict: - return + #dict = updates.CheckBinaryUpdates(self.constants).check_binary_updates() + #if not dict: + # return + dict = {"Version": "1.2.0", "Link": "https://github.com/dortania/OpenCore-Legacy-Patcher/releases/tag/1.1.0", "Github Link": "https://github.com/dortania/OpenCore-Legacy-Patcher/releases/tag/1.1.0" } version = dict["Version"] logging.info(f"New version: {version}") @@ -345,7 +346,12 @@ class MainFrame(wx.Frame): url = "https://api.github.com/repos/dortania/OpenCore-Legacy-Patcher/releases/latest" response = requests.get(url).json() - changelog = response["body"].split("## Asset Information")[0] + try: + changelog = response["body"].split("## Asset Information")[0] + except: #if user constantly checks for updates, github will rate limit them + changelog = """## Unable to fetch changelog + +Please check the Github page for more information about this release.""" html_markdown = markdown2.markdown(changelog) html_css = """ @@ -372,14 +378,14 @@ class MainFrame(wx.Frame): } """ - frame = wx.Dialog(None, -1, title="", size=(600, 500)) - frame.SetMinSize((600, 500)) + frame = wx.Dialog(None, -1, title="", size=(650, 500)) + frame.SetMinSize((650, 500)) frame.SetWindowStyle(wx.STAY_ON_TOP) panel = wx.Panel(frame) sizer = wx.BoxSizer(wx.VERTICAL) sizer.AddSpacer(10) self.title_text = wx.StaticText(panel, label="A new version of OpenCore Legacy Patcher is available!") - self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {oclp_version} is now available - You have {self.constants.patcher_version}{'-nightly' if not self.constants.commit_info[0].startswith('refs/tags') else ''}. Would you like to update?") + self.description = wx.StaticText(panel, label=f"OpenCore Legacy Patcher {oclp_version} is now available - You have {self.constants.patcher_version}{' (Nightly)' if not self.constants.commit_info[0].startswith('refs/tags') else ''}. Would you like to update?") self.title_text.SetFont(wx.Font(19, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, ".AppleSystemUIFont")) self.description.SetFont(wx.Font(13, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, ".AppleSystemUIFont")) self.web_view = wx.html2.WebView.New(panel, style=wx.BORDER_SUNKEN) From 7e7a5d0f3598b6a68cffd5a18b2ed5805d0f590e Mon Sep 17 00:00:00 2001 From: Jazzzny Date: Mon, 23 Oct 2023 14:24:27 -0400 Subject: [PATCH 5/5] Remove temp change --- resources/wx_gui/gui_main_menu.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/resources/wx_gui/gui_main_menu.py b/resources/wx_gui/gui_main_menu.py index 8a6244b01..50f56edeb 100644 --- a/resources/wx_gui/gui_main_menu.py +++ b/resources/wx_gui/gui_main_menu.py @@ -278,17 +278,16 @@ class MainFrame(wx.Frame): return ignore_updates = global_settings.GlobalEnviromentSettings().read_property("IgnoreAppUpdates") - #if ignore_updates is True: - # self.constants.ignore_updates = True - # return + if ignore_updates is True: + self.constants.ignore_updates = True + return self.constants.ignore_updates = False self.constants.has_checked_updates = True - #dict = updates.CheckBinaryUpdates(self.constants).check_binary_updates() - #if not dict: - # return + dict = updates.CheckBinaryUpdates(self.constants).check_binary_updates() + if not dict: + return - dict = {"Version": "1.2.0", "Link": "https://github.com/dortania/OpenCore-Legacy-Patcher/releases/tag/1.1.0", "Github Link": "https://github.com/dortania/OpenCore-Legacy-Patcher/releases/tag/1.1.0" } version = dict["Version"] logging.info(f"New version: {version}")