Merge branch 'main' into patch-1

This commit is contained in:
Howard Wu 2024-03-03 08:03:37 +08:00 committed by GitHub
commit 3f66e20ba2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 48 additions and 24 deletions

View file

@ -53,24 +53,29 @@
## Text Guide
1. Star (if you like).
2. Clone the repo to local:
2. Clone the repo to local and change the working directory:
```bash
git clone https://github.com/LSPosed/MagiskOnWSALocal.git --depth 1
cd MagiskOnWSALocal
```
3. Run `cd MagiskOnWSALocal`.
4. Run `./scripts/run.sh`.
5. Select the WSA version and its architecture (mostly x64).
6. Select the version of Magisk.
7. Choose which brand of GApps you want to install:
5. Run
```bash
./scripts/run.sh`
```
6. Select the WSA version and its architecture (mostly x64).
7. Select the version of Magisk.
8. Choose which brand of GApps you want to install:
- MindTheGapps
There is no other variant we can choose.
8. Select the root solution (none means no root).
9. If you are running the script for the first time, it will take some time to complete. After the script completes, two new folders named `output` and `download` will be generated in the `MagiskOnWSALocal` folder. Go to the `output` folder. While running the `./run.sh` script in the step 3, if you selected `Yes` for `Do you want to compress the output?` then in `output` folder you will see a compressed file called `WSA-with-magisk-stable-MindTheGapps_2207.40000.8.0_x64_Release-Nightly`or else there will be folder with the `WSA-with-magisk-stable-MindTheGapps_2207.40000.8.0_x64_Release-Nightly`. If there is a folder open it and skip to step 10. NOTE: The name of compressed file or the folder generated in the `output` folder may be different for you. It will be dependent on the choices made when executing `./run.sh`.
10. Extract the compressed file and open the folder created after the extraction of the file.
11. Here look for file `Run.bat` and run it.
9. Select the root solution (none means no root).
10. If you are running the script for the first time, it will take some time to complete. After the script completes, two new folders named `output` and `download` will be generated in the `MagiskOnWSALocal` folder. Go to the `output` folder. While running the `./run.sh` script in the step 3, if you selected `Yes` for `Do you want to compress the output?` then in `output` folder you will see a compressed file called `WSA-with-magisk-stable-MindTheGapps_2207.40000.8.0_x64_Release-Nightly`or else there will be folder with the `WSA-with-magisk-stable-MindTheGapps_2207.40000.8.0_x64_Release-Nightly`. If there is a folder open it and skip to step 10. NOTE: The name of compressed file or the folder generated in the `output` folder may be different for you. It will be dependent on the choices made when executing `./run.sh`.
11. Extract the compressed file and open the folder created after the extraction of the file.
12. Here look for file `Run.bat` and run it.
- If you previously have a MagiskOnWSA installation, it will automatically uninstall the previous one while **preserving all user data** and install the new one, so don't worry about your data.
- If you have an official WSA installation, you should uninstall it first. (In case you want to preserve your data, you can backup `%LOCALAPPDATA%\Packages\MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe\LocalCache\userdata.vhdx` before uninstallation and restore it after installation.)
- If the popup windows disappear **without asking administrative permission** and WSA is not installed successfully, you should manually run `Install.ps1` as Administrator:
@ -79,7 +84,7 @@
3. Input `PowerShell.exe -ExecutionPolicy Bypass -File .\Install.ps1` and press `Enter`.
4. The script will run and WSA will be installed.
5. If this workaround does not work, your PC is not supported for WSA.
12. Magisk/Play Store will be launched. Enjoy by installing LSPosed-Zygisk with Zygisk enabled or Riru and LSPosed-Riru.
13. Magisk/Play Store will be launched. Enjoy by installing LSPosed-Zygisk with Zygisk enabled or Riru and LSPosed-Riru.
---

View file

@ -104,7 +104,7 @@ with zipfile.ZipFile(wsa_zip_path) as zip:
elif g.filename == 'AppxManifest.xml':
g.filename = f'resources.{name}.xml'
l.extract(g, xmldir)
elif re.search(u'Images/.+\.png', g.filename):
elif re.search(r'Images/.+\.png', g.filename):
l.extract(g, archdir)
with zipfile.ZipFile(zip_path) as zip:
stat = Path(zip_path).stat()

View file

@ -50,12 +50,12 @@ if brand == "OpenGApps":
print("Failed to fetch from OpenGApps API, fallbacking to SourceForge RSS...")
res = requests.get(
f'https://sourceforge.net/projects/opengapps/rss?path=/{abi_map[arch]}&limit=100')
link = re.search(f'https://.*{abi_map[arch]}/.*{release}.*{variant}.*\.zip/download', res.text).group().replace(
link = re.search(fr'https://.*{abi_map[arch]}/.*{release}.*{variant}.*\.zip/download', res.text).group().replace(
'.zip/download', '.zip').replace('sourceforge.net/projects/opengapps/files', 'downloads.sourceforge.net/project/opengapps')
elif brand == "MindTheGapps":
res = requests.get(
f'https://sourceforge.net/projects/wsa-mtg/rss?path=/{abi_map[arch]}&limit=100')
matched = re.search(f'https://.*{release}.*{abi_map[arch]}.*\.zip/download', res.text)
matched = re.search(fr'https://.*{release}.*{abi_map[arch]}.*\.zip/download', res.text)
if matched:
link = matched.group().replace(
'.zip/download', '.zip').replace('sourceforge.net/projects/wsa-mtg/files', 'downloads.sourceforge.net/project/wsa-mtg')
@ -68,7 +68,7 @@ elif brand == "MindTheGapps":
if res.status_code == 200:
assets = json_data["assets"]
for asset in assets:
if re.match(f'.*{release}.*{abi_map[arch]}.*\.zip$', asset["name"]) and asset["content_type"] == "application/zip":
if re.match(fr'.*{release}.*{abi_map[arch]}.*\.zip$', asset["name"]) and asset["content_type"] == "application/zip":
link = asset["browser_download_url"]
break
elif res.status_code == 403 and x_ratelimit_remaining == '0':

View file

@ -62,7 +62,7 @@ if res.status_code == 200:
link = ""
assets = json_data["assets"]
for asset in assets:
if re.match(f'kernel-WSA-{abi_map[arch]}-{kernelVersion}.*\.zip$', asset["name"]) and asset["content_type"] == "application/zip":
if re.match(fr'kernel-WSA-{abi_map[arch]}-{kernelVersion}.*\.zip$', asset["name"]) and asset["content_type"] == "application/zip":
link = asset["browser_download_url"]
break
if link == "":

View file

@ -145,24 +145,24 @@ def send_req(i, v, out_file_name):
threads = []
wsa_build_ver = 0
for filename, values in identities.items():
if re.match(f"MicrosoftCorporationII\.WindowsSubsystemForAndroid_.*\.msixbundle", filename):
tmp_wsa_build_ver = re.search(u'\d{4}.\d{5}.\d{1,}.\d{1,}', filename).group()
if re.match(fr"MicrosoftCorporationII\.WindowsSubsystemForAndroid_.*\.msixbundle", filename):
tmp_wsa_build_ver = re.search(r'\d{4}.\d{5}.\d{1,}.\d{1,}', filename).group()
if(wsa_build_ver == 0):
wsa_build_ver = tmp_wsa_build_ver
elif version.parse(wsa_build_ver) < version.parse(tmp_wsa_build_ver):
wsa_build_ver = tmp_wsa_build_ver
for filename, values in identities.items():
if re.match(f"Microsoft\.UI\.Xaml\..*_{arch}_.*\.appx", filename):
if re.match(fr"rMicrosoft\.UI\.Xaml\..*_{arch}_.*\.appx", filename):
out_file_name = f"{values[1]}_{arch}.appx"
out_file = download_dir / out_file_name
elif re.match(f"Microsoft\.VCLibs\..+\.UWPDesktop_.*_{arch}_.*\.appx", filename):
elif re.match(fr"Microsoft\.VCLibs\..+\.UWPDesktop_.*_{arch}_.*\.appx", filename):
out_file_name = f"{values[1]}_{arch}.appx"
out_file = download_dir / out_file_name
elif re.match(f"Microsoft\.VCLibs\..+_.*_{arch}_.*\.appx", filename):
elif re.match(fr"Microsoft\.VCLibs\..+_.*_{arch}_.*\.appx", filename):
out_file_name = f"{values[1]}_{arch}.appx"
out_file = download_dir / out_file_name
elif not skip_wsa_download and re.match(f"MicrosoftCorporationII\.WindowsSubsystemForAndroid_.*\.msixbundle", filename):
tmp_wsa_build_ver = re.search(u'\d{4}.\d{5}.\d{1,}.\d{1,}', filename).group()
elif not skip_wsa_download and re.match(fr"MicrosoftCorporationII\.WindowsSubsystemForAndroid_.*\.msixbundle", filename):
tmp_wsa_build_ver = re.search(r'\d{4}.\d{5}.\d{1,}.\d{1,}', filename).group()
if(wsa_build_ver != tmp_wsa_build_ver):
continue
version_splitted = wsa_build_ver.split(".")

View file

@ -54,6 +54,7 @@ check_dependencies
osrel=$(sed -n '/^ID_LIKE=/s/^.*=//p' /etc/os-release)
declare -A os_pm_install
# os_pm_install["/etc/redhat-release"]=yum
os_pm_install["/etc/fedora-release"]=dnf
os_pm_install["/etc/arch-release"]=pacman
os_pm_install["/etc/gentoo-release"]=emerge
os_pm_install["/etc/SuSE-release"]=zypper
@ -62,6 +63,7 @@ os_pm_install["/etc/debian_version"]=apt-get
declare -A PM_UPDATE_MAP
PM_UPDATE_MAP["yum"]="check-update"
PM_UPDATE_MAP["dnf"]="check-update"
PM_UPDATE_MAP["pacman"]="-Syu --noconfirm"
PM_UPDATE_MAP["emerge"]="-auDU1 @world"
PM_UPDATE_MAP["zypper"]="ref"
@ -70,6 +72,7 @@ PM_UPDATE_MAP["apk"]="update"
declare -A PM_INSTALL_MAP
PM_INSTALL_MAP["yum"]="install -y"
PM_INSTALL_MAP["dnf"]="install -y"
PM_INSTALL_MAP["pacman"]="-S --noconfirm --needed"
PM_INSTALL_MAP["emerge"]="-a"
PM_INSTALL_MAP["zypper"]="in -y"
@ -128,12 +131,28 @@ elif [[ "$PM" =~ pacman|emerge ]]; then
abort "Operation cancelled by user"
;;
esac
elif [ "$PM" = dnf ]; then
sudo "$PM" "${UPDATE_OPTION[@]}" >>/dev/null
if ! [[ $? =~ 0|100 ]]; then
abort
fi
sudo "$PM" "${UPGRADE_OPTION[@]}" ca-certificates
else
if ! (sudo "$PM" "${UPDATE_OPTION[@]}" && sudo "$PM" "${UPGRADE_OPTION[@]}" ca-certificates); then abort; fi
fi
if [ -n "${NEED_INSTALL[*]}" ]; then
if [ "$PM" = "zypper" ]; then
if [ "$PM" = "dnf" ]; then
NEED_INSTALL_FIX=${NEED_INSTALL[*]}
{
NEED_INSTALL_FIX=${NEED_INSTALL_FIX//whiptail/newt} 2>&1
NEED_INSTALL_FIX=${NEED_INSTALL_FIX//qemu-utils/qemu-img} 2>&1
NEED_INSTALL_FIX=${NEED_INSTALL_FIX//p7zip-full/p7zip-plugins} 2>&1
} >>/dev/null
readarray -td ' ' NEED_INSTALL <<<"$NEED_INSTALL_FIX "
unset 'NEED_INSTALL[-1]'
elif [ "$PM" = "zypper" ]; then
NEED_INSTALL_FIX=${NEED_INSTALL[*]}
{
NEED_INSTALL_FIX=${NEED_INSTALL_FIX//setools/setools-console} 2>&1