mirror of
https://github.com/LSPosed/MagiskOnWSALocal.git
synced 2025-04-25 17:59:35 +00:00
Merge branch 'main' into patch-1
This commit is contained in:
commit
3f66e20ba2
6 changed files with 48 additions and 24 deletions
|
@ -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.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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':
|
||||
|
|
|
@ -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 == "":
|
||||
|
|
|
@ -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(".")
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue