APK自动安装脚本

@echo off
setlocal enabledelayedexpansion
title APK自动安装脚本
color 0A
REM @Author: xpz
echo ===============================================
echo            APK自动卸载并安装脚本
echo            APK包名名为com.tld.factory
echo ===============================================
echo.

:: 步骤1: 扫描桌面包含QiRui_RK3568_release的文件
echo [步骤1/4] 正在扫描桌面文件,查找应用.apk文件...
set file_count=0

:: 清空可能存在的旧文件列表
for /l %%i in (1,1,20) do set "file_%%i="

:: 查找桌面上的相关文件
for /f "delims=" %%i in ('dir /b "%USERPROFILE%\Desktop\*.apk" 2^>nul') do (
    set /a file_count+=1
    set "file_!file_count!=%%i"
    echo  发现文件 [!file_count!]: %%i
)

:: 检查是否找到文件
if %file_count% equ 0 (
    echo.
    echo 错误: 未在桌面找到包含".apk"的文件。
    goto :pause_exit
)

echo.
echo 扫描完成,共找到 %file_count% 个匹配文件。

:: 文件选择逻辑
set selected_file=
if %file_count% equ 1 (
    set selected_file=!file_1!
    echo 仅找到一个文件,自动选择: !selected_file!
) else (
    echo 找到多个文件,请选择要安装的文件:
    :input_choice
    set /p "choice=请输入序号(1-%file_count%): "
    
    :: 验证输入有效性
    set is_valid=0
    for /l %%i in (1,1,%file_count%) do (
        if "!choice!"=="%%i" set is_valid=1
    )
    
    if !is_valid! equ 0 (
        echo 错误: 无效的选择,请输入1-%file_count%之间的数字。
        goto :input_choice
    )
    
    set selected_file=!file_%choice%!
    echo 已选择: !selected_file!
)

echo.
echo 按任意键继续安装过程,或关闭窗口取消...
pause >nul

:: 步骤2: 检查ADB环境
echo.
echo [步骤2/4] 检查ADB环境...
adb version >nul 2>&1
if errorlevel 1 (
    echo 错误: ADB未正确安装或未配置环境变量。
    echo.
    echo 请确保:
    echo   1. 已安装Android SDK平台工具
    echo   2. 已将%%ANDROID_HOME%%\platform-tools添加到PATH环境变量
    echo   3. 或者在此脚本中正确设置ADB路径
    goto :pause_exit
)

:: 显示ADB版本信息
echo ADB环境正常,版本信息:
adb version

:: 等待设备连接
echo.
echo 等待设备连接...
adb wait-for-device
if errorlevel 1 (
    echo 错误: 设备连接失败或未授权USB调试。
    echo 请检查:
    echo   1. USB线是否连接正常
    echo   2. 是否开启USB调试模式
    echo   3. 设备上是否授权了USB调试
    goto :pause_exit
)
echo 设备连接成功。

:: 步骤3: 智能卸载应用com.tld.factory (优化部分)
echo.
echo [步骤3/4] 检查应用状态: com.tld.factory...
echo 正在检查设备上是否已安装该应用...

:: 检查应用是否存在于设备中
adb shell pm list packages | findstr /c:"com.tld.factory" >nul 2>&1
if errorlevel 1 (
    echo 应用 com.tld.factory 在设备上不存在,跳过卸载步骤。
) else (
    echo 应用 com.tld.factory 已存在,正在卸载...
    adb uninstall com.tld.factory
    
    :: 检查卸载结果
    if errorlevel 1 (
        echo 警告: 卸载操作失败,但将继续尝试安装...
    ) else (
        echo 卸载完成。
    )
)

:: 步骤4: 安装选中的APK文件
echo.
echo [步骤4/4] 正在安装: !selected_file!
echo 安装过程可能需要一些时间,请耐心等待...

:: 构建完整的文件路径 覆盖安装
set "full_path=%USERPROFILE%\Desktop\!selected_file!"
echo 执行命令: adb install -r "%full_path%"

:: 检查文件是否存在
if not exist "%full_path%" (
    echo 错误: 文件不存在: %full_path%
    goto :pause_exit
)

:: 执行安装
adb install "%full_path%"
set install_result=!errorlevel!

if !install_result! equ 0 (
    echo.
    echo 安装成功!
    
    :: 验证安装是否真的成功
    echo 验证应用是否安装成功...
    adb shell pm list packages | findstr /c:"tld.factory" >nul 2>&1
    if errorlevel 1 (
        echo 警告: 安装成功但未在设备上找到应用包
    ) else (
        echo 应用包确认存在于设备上
        echo 启动应用中...
        adb shell am start com.tld.factory/.ui.MainActivity
    )
) else (
    echo.
    echo 错误: 安装失败!
    echo 可能的原因:
    echo   - 设备存储空间不足
    echo   - APK文件损坏
    echo   - 设备不兼容
    echo   - 签名冲突
    goto :pause_exit
)

echo.
echo ===============================================
echo           所有操作已完成!
echo ===============================================
echo 安装的文件: !selected_file!
echo 安装时间: %date% %time%
echo ===============================================

:pause_exit
echo.
echo 脚本执行完毕。
pause
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容