首页
/ MagiskOnWSALocal项目安装脚本深度解析

MagiskOnWSALocal项目安装脚本深度解析

2025-07-06 06:24:21作者:江焘钦

脚本概述

MagiskOnWSALocal项目的Install.ps1是一个PowerShell脚本,主要用于在Windows系统上安装经过修改的Windows Subsystem for Android (WSA),并集成Magisk功能。该脚本自动化了整个安装过程,包括环境检查、依赖安装、权限管理和最终配置。

核心功能解析

1. 管理员权限检查

脚本首先通过Test-Administrator函数检查是否以管理员权限运行,这是安装系统级组件的基本要求。如果未以管理员身份运行,脚本会自动请求提升权限:

function Test-Administrator {
    [OutputType([bool])]
    param()
    process {
        [Security.Principal.WindowsPrincipal]$user = [Security.Principal.WindowsIdentity]::GetCurrent();
        return $user.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator);
    }
}

2. 系统依赖检查与安装

脚本会检查并启用必要的Windows功能,特别是"VirtualMachinePlatform"(虚拟机平台),这是WSA运行的基础:

If ($(Get-WindowsOptionalFeature -Online -FeatureName 'VirtualMachinePlatform').State -Ne "Enabled") {
    Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName 'VirtualMachinePlatform'
    # 提示用户重启
}

3. 依赖包版本管理

通过Get-InstalledDependencyVersion函数,脚本能够检查已安装依赖包的版本,并与所需版本进行比较:

function Get-InstalledDependencyVersion {
    param (
        [string]$Name,
        [string]$ProcessorArchitecture
    )
    PROCESS {
        If ($null -Ne $ProcessorArchitecture) {
            return Get-AppxPackage -Name $Name | ForEach-Object { 
                if ($_.Architecture -Eq $ProcessorArchitecture) { $_ } 
            } | Sort-Object -Property Version | Select-Object -ExpandProperty Version -Last 1;
        }
    }
}

4. 安装过程控制

脚本会处理完整的安装流程:

  1. 检查文件完整性(通过filelist.txt)
  2. 合并资源(使用MakePri.ps1)
  3. 注册开发模式权限
  4. 安装或更新WSA包
Add-AppxPackage -ForceApplicationShutdown -ForceUpdateFromAnyVersion -Register .\AppxManifest.xml

5. 冲突处理机制

如果检测到已安装的WSA版本,脚本会提供卸载选项:

If (($null -Ne $Installed) -And (-Not ($Installed.IsDevelopmentMode))) {
    Write-Warning "已安装WSA存在,请先卸载..."
    # 提供卸载选项
}

技术亮点

  1. 多环境兼容:脚本同时支持PowerShell和PowerShell Core(pwsh),确保在不同Windows版本上都能运行。

  2. 错误恢复机制:当更新失败时,脚本会尝试保留用户数据的情况下重新安装。

  3. 资源国际化处理:通过MakePri工具合并多语言资源,虽然失败时仍能继续安装,但会提示界面可能保持英文。

  4. 进程管理:正确处理WSA客户端进程的关闭和重启。

安装流程详解

  1. 权限准备阶段

    • 检查管理员权限
    • 必要时请求提升权限
    • 设置执行策略
  2. 环境检查阶段

    • 验证虚拟机平台功能
    • 检查依赖包版本
    • 验证文件完整性
  3. 资源准备阶段

    • 合并多语言资源
    • 注册开发模式
  4. 安装执行阶段

    • 关闭现有WSA实例
    • 安装或更新WSA包
    • 处理冲突情况
  5. 完成阶段

    • 自动启动Magisk和Google Play
    • 提供完成反馈

常见问题处理

  1. 安装失败时的处理:脚本会尝试保留用户数据重新安装,但会丢失开始菜单中的快捷方式。

  2. 依赖包版本过低:脚本会自动安装所需版本的依赖包。

  3. 虚拟机平台未启用:脚本会提示启用并建议重启系统。

  4. Windows Terminal兼容性问题:检测到WT环境时会自动切换到conhost.exe。

安全考虑

  1. 脚本遵循AGPLv3许可证,确保开源自由。
  2. 所有系统修改都明确提示用户确认。
  3. 关键操作前会检查环境状态,避免意外系统更改。

总结

MagiskOnWSALocal的Install.ps1脚本提供了一个完整的、自动化的WSA定制安装方案。通过细致的环境检查、完善的错误处理和用户友好的交互设计,使得在Windows上安装带有Magisk功能的Android子系统变得简单可靠。脚本展示了PowerShell在系统管理自动化方面的强大能力,同时也体现了对用户体验的细致考虑。