diff --git a/wine/aarch64/makepri.exe b/bin/arm64/makepri.exe old mode 100755 new mode 100644 similarity index 100% rename from wine/aarch64/makepri.exe rename to bin/arm64/makepri.exe diff --git a/wine/x86_64/makepri.exe b/bin/x64/makepri.exe old mode 100755 new mode 100644 similarity index 100% rename from wine/x86_64/makepri.exe rename to bin/x64/makepri.exe diff --git a/docs/README.md b/docs/README.md index 66dd709..9e62ff6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -8,12 +8,10 @@ The following dependencies are required: - | DistrOS | | | | | - |:-------------------:|-------------------------------------------------------------------------------------------------|------------|------------|--------------| - | Debian | `lzip wine winetricks patchelf e2fsprogs aria2 python3 python3-pip aria2 p7zip-full attr unzip` | `whiptail` | `xz-utils` | `qemu-utils` | - | openSUSE Tumbleweed | Same as above | `dialog` | `xz` | `qemu-tools` | - - The following components need to be installed using `winetricks`: `msxml6` + | DistrOS | | | | | + |:-------------------:|---------------------------------------------------------------------------------|------------|------------|--------------| + | Debian | `lzip patchelf e2fsprogs aria2 python3 python3-pip aria2 p7zip-full attr unzip` | `whiptail` | `xz-utils` | `qemu-utils` | + | openSUSE Tumbleweed | Same as above | `dialog` | `xz` | `qemu-tools` | The python3 library `requests` is used. @@ -27,7 +25,7 @@ - Debian (You can use [WSL2](https://apps.microsoft.com/store/detail/debian/9MSVKQC78PK6)) - Need to add `contrib` sources to the source list to install winetricks. + Ready to use right out of the box. - openSUSE Tumbleweed (You can use [WSL2](https://apps.microsoft.com/store/detail/opensuse-tumbleweed/9MSSK2ZXXN11)) diff --git a/installer/Install.ps1 b/installer/Install.ps1 index bff39cb..11a8a5c 100644 --- a/installer/Install.ps1 +++ b/installer/Install.ps1 @@ -48,6 +48,10 @@ If (((Test-Path -Path $FileList) -Eq $false).Count) { exit 1 } +If ((Test-Path -Path "MakePri.ps1") -Eq $true) { + Start-Process powershell.exe -Wait -Args "-ExecutionPolicy Bypass -File MakePri.ps1" -WorkingDirectory $PSScriptRoot +} + reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1" If ($(Get-WindowsOptionalFeature -Online -FeatureName 'VirtualMachinePlatform').State -Ne "Enabled") { diff --git a/installer/MakePri.ps1 b/installer/MakePri.ps1 new file mode 100644 index 0000000..5ebea8f --- /dev/null +++ b/installer/MakePri.ps1 @@ -0,0 +1,26 @@ +If ((Test-Path -Path "pri") -Eq $true -And (Test-Path -Path "xml") -Eq $true) { + $proc = Start-Process -PassThru makepri.exe -Args "resourcepack /pr .\pri /cf .\xml\priconfig.xml /of .\resources.pri /if .\resources.pri /o" + $proc.WaitForExit() + If ($proc.ExitCode -Ne 0) { + Write-Warning "Failed to merge resources`r`n" + exit 1 + } + else { + $AppxManifestFile = ".\AppxManifest.xml" + $ProjectXml = [xml](Get-Content $AppxManifestFile) + $ProjectResources = $ProjectXml.Package.Resources; + $Item = Get-Item .\xml\* -Exclude "priconfig.xml" -Include "*.xml" + $Item | ForEach-Object { + $Xml = [xml](Get-Content $_) + $Resource = $Xml.Package.Resources.Resource + $newNode = $ProjectXml.ImportNode($Resource, $true) + $ProjectResources.AppendChild($newNode) + } + $ProjectXml.Save($AppxManifestFile) + Remove-Item 'pri' -Recurse + Remove-Item 'xml' -Recurse + Remove-Item 'makepri.exe' + Remove-Item $PSCommandPath -Force + exit 0 + } +} diff --git a/scripts/build.sh b/scripts/build.sh index d4e8350..b35f4ff 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -731,18 +731,18 @@ elif [ "$ROOT_SOL" = "kernelsu" ]; then cp "$WORK_DIR/kernelsu/kernel" "$WORK_DIR/wsa/$ARCH/Tools/kernel" echo -e "Integrate KernelSU done\n" fi -[ -f "$WORK_DIR/wsa/pri" ] && { - echo "Merge Language Resources" - if [ -f /proc/sys/fs/binfmt_misc/WSLInterop ] && [ "$(id -u)" != "0" ]; then - "../wine/$HOST_ARCH/makepri.exe" resourcepack /pr "$(wslpath -w "$WORK_DIR/wsa/pri")" /cf "$(wslpath -w "../xml/priconfig.xml")" /of "$(wslpath -w "$WORK_DIR/wsa/$ARCH/resources.pri")" /if "$(wslpath -w "$WORK_DIR/wsa/$ARCH/resources.pri")" /o || res_merge_failed=1 - elif which wine64 >/dev/null; then - wine64 "../wine/$HOST_ARCH/makepri.exe" resourcepack /pr "$WORK_DIR/wsa/pri" /cf "../xml/priconfig.xml" /of "$WORK_DIR/wsa/$ARCH/resources.pri" /if "$WORK_DIR/wsa/$ARCH/resources.pri" /o || res_merge_failed=1 - else - res_merge_failed=1 - fi - [ -z "$res_merge_failed" ] && sed -i -zE "s//\n$(cat "$WORK_DIR/wsa/xml/"* | grep -Po ']*/>' | sed ':a;N;$!ba;s/\n/\\n/g' | sed 's/\$/\\$/g' | sed 's/\//\\\//g')\n<\/Resources>/g" "$WORK_DIR/wsa/$ARCH/AppxManifest.xml" && - echo -e "Merge Language Resources done\n" -} && [ -n "$res_merge_failed" ] && echo -e "Merge Language Resources failed\n" && unset res_merge_failed +# [ -f "$WORK_DIR/wsa/pri" ] && { +# echo "Merge Language Resources" +# if [ -f /proc/sys/fs/binfmt_misc/WSLInterop ] && [ "$(id -u)" != "0" ]; then +# "../wine/$HOST_ARCH/makepri.exe" resourcepack /pr "$(wslpath -w "$WORK_DIR/wsa/pri")" /cf "$(wslpath -w "../xml/priconfig.xml")" /of "$(wslpath -w "$WORK_DIR/wsa/$ARCH/resources.pri")" /if "$(wslpath -w "$WORK_DIR/wsa/$ARCH/resources.pri")" /o || res_merge_failed=1 +# elif which wine64 >/dev/null; then +# wine64 "../wine/$HOST_ARCH/makepri.exe" resourcepack /pr "$WORK_DIR/wsa/pri" /cf "../xml/priconfig.xml" /of "$WORK_DIR/wsa/$ARCH/resources.pri" /if "$WORK_DIR/wsa/$ARCH/resources.pri" /o || res_merge_failed=1 +# else +# res_merge_failed=1 +# fi +# [ -z "$res_merge_failed" ] && sed -i -zE "s//\n$(cat "$WORK_DIR/wsa/xml/"* | grep -Po ']*/>' | sed ':a;N;$!ba;s/\n/\\n/g' | sed 's/\$/\\$/g' | sed 's/\//\\\//g')\n<\/Resources>/g" "$WORK_DIR/wsa/$ARCH/AppxManifest.xml" && +# echo -e "Merge Language Resources done\n" +# } && [ -n "$res_merge_failed" ] && echo -e "Merge Language Resources failed\n" && unset res_merge_failed echo "Add extra packages" $SUDO cp -r "../$ARCH/system/"* "$SYSTEM_MNT" || abort @@ -844,6 +844,9 @@ fi echo "Remove signature and add scripts" $SUDO rm -rf "${WORK_DIR:?}"/wsa/"$ARCH"/\[Content_Types\].xml "$WORK_DIR/wsa/$ARCH/AppxBlockMap.xml" "$WORK_DIR/wsa/$ARCH/AppxSignature.p7x" "$WORK_DIR/wsa/$ARCH/AppxMetadata" || abort cp "$vclibs_PATH" "$xaml_PATH" "$WORK_DIR/wsa/$ARCH" || abort +cp "../bin/$ARCH/makepri.exe" "$WORK_DIR/wsa/$ARCH" || abort +cp "../xml/priconfig.xml" "$WORK_DIR/wsa/$ARCH/xml/" || abort +cp ../installer/MakePri.ps1 "$WORK_DIR/wsa/$ARCH" || abort cp ../installer/Install.ps1 "$WORK_DIR/wsa/$ARCH" || abort cp ../installer/Run.bat "$WORK_DIR/wsa/$ARCH" || abort find "$WORK_DIR/wsa/$ARCH" -maxdepth 1 -mindepth 1 -printf "%P\n" >"$WORK_DIR/wsa/$ARCH/filelist.txt" || abort diff --git a/scripts/extractWSA.py b/scripts/extractWSA.py index b7f5633..52ac3f2 100644 --- a/scripts/extractWSA.py +++ b/scripts/extractWSA.py @@ -76,11 +76,11 @@ with zipfile.ZipFile(wsa_zip_path) as zip: with zipfile.ZipFile(workdir / f.filename) as l: for g in l.filelist: if g.filename == 'resources.pri': - g.filename = f'{name}.pri' - l.extract(g, workdir / 'pri') + g.filename = f'resources.{name}.pri' + l.extract(g, workdir / archdir / 'pri') elif g.filename == 'AppxManifest.xml': - g.filename = f'{name}.xml' - l.extract(g, workdir / 'xml') + g.filename = f'resources.{name}.xml' + l.extract(g, workdir / archdir / 'xml') elif re.search(u'Images/.+\.png', g.filename): l.extract(g, archdir) with zipfile.ZipFile(zip_path) as zip: diff --git a/scripts/install_deps.sh b/scripts/install_deps.sh index cb0126f..01aa8d0 100755 --- a/scripts/install_deps.sh +++ b/scripts/install_deps.sh @@ -40,10 +40,6 @@ echo "Checking and ensuring dependencies" check_dependencies() { command -v whiptail >/dev/null 2>&1 || command -v dialog >/dev/null 2>&1 || NEED_INSTALL+=("whiptail") command -v lzip >/dev/null 2>&1 || NEED_INSTALL+=("lzip") - if [ ! -f /proc/sys/fs/binfmt_misc/WSLInterop ] || [ "$(id -u)" == "0" ]; then - command -v wine64 >/dev/null 2>&1 || NEED_INSTALL+=("wine") - command -v winetricks >/dev/null 2>&1 || NEED_INSTALL+=("winetricks") - fi command -v patchelf >/dev/null 2>&1 || NEED_INSTALL+=("patchelf") command -v resize2fs >/dev/null 2>&1 || NEED_INSTALL+=("e2fsprogs") command -v pip >/dev/null 2>&1 || NEED_INSTALL+=("python3-pip") @@ -121,10 +117,3 @@ if [ -n "${NEED_INSTALL[*]}" ]; then fi fi python3 -m pip install -r requirements.txt -q - -if [ ! -f /proc/sys/fs/binfmt_misc/WSLInterop ] || [ "$(id -u)" == "0" ] && which wine64 > /dev/null; then - winetricks list-installed | grep -E "^msxml6" >/dev/null 2>&1 || { - cp -r ../wine/.cache/* ~/.cache - winetricks msxml6 || abort - } -fi diff --git a/wine/.cache/winetricks/msxml6/msxml6-KB973686-enu-amd64.exe b/wine/.cache/winetricks/msxml6/msxml6-KB973686-enu-amd64.exe deleted file mode 100755 index 20804d8..0000000 Binary files a/wine/.cache/winetricks/msxml6/msxml6-KB973686-enu-amd64.exe and /dev/null differ diff --git a/xml/priconfig.xml b/xml/priconfig.xml index 8bf91a8..181aa69 100644 --- a/xml/priconfig.xml +++ b/xml/priconfig.xml @@ -2,9 +2,10 @@ - + - - + + \ No newline at end of file