Directory Opus 13.6 可用的apk文件右键菜单脚本

// apk文件的右键经过adb安装的脚本,可以在多个设备中选择

function OnClick(clickData) {
    try {
      
 		// 检查是否选中了文件
        if (clickData.func.sourcetab.selected_files.count == 0) {
            DOpus.Output("没有选中任何文件");
            return;
        }
        // 获取选中的文件名
        var selectedFile = clickData.func.sourcetab.selected_files(0).realpath;
        DOpus.Output("选中的文件: " + selectedFile);
        // 创建 WScript.Shell 对象
        var WshShell = new ActiveXObject("WScript.Shell");
        // 调试输出,确认 WshShell 对象是否创建成功
        DOpus.Output("WshShell 对象创建成功");

        // 使用完整路径或确保 adb 在环境变量路径中
        var adbPath = "adb"; // 如果 adb 在环境变量中
        var adbExec = WshShell.Exec(adbPath + " devices -l");
        // 调试输出,确认命令是否成功执行
        DOpus.Output("adb 命令已执行");

        // 等待命令执行完成
        while (adbExec.Status == 0) {
            DOpus.Output("等待 adb 命令完成...");
            DOpus.Delay(500);
        }

        // 输出命令的退出代码
        DOpus.Output("adb 命令退出代码: " + adbExec.ExitCode);
        // 输出命令的标准输出
        var output = adbExec.StdOut.ReadAll();
        DOpus.Output("adb 命令输出: " + output);
        // 输出命令的错误输出
        var errorOutput = adbExec.StdErr.ReadAll();
        if (errorOutput) {
            DOpus.Output("adb 命令错误输出: " + errorOutput);
        }

        // 解析 adb 命令的输出,提取设备信息
        var deviceList = [];
        var lines = output.split('\n');
        for (var i = 1; i < lines.length; i++) {
            var line = lines[i];
            if (line) {
                var parts = line.split(/\s+/);
                if (parts.length > 2) {
                    var deviceId = parts[0];
                    var model = "";
                    for (var j = 0; j < parts.length; j++) {
                        if (parts[j].indexOf("model:") === 0) {
                            model = parts[j].split(':')[1];
                            break;
                        }
                    }
					DOpus.Output("deviceId "+deviceId+" model  "+model);
                    deviceList.push({id: deviceId, model: model});
                }
            }
        }
        // 如果没有设备,输出提示信息
        if (deviceList.length === 0) {
            DOpus.Output("没有检测到设备"+deviceList);
            return;
        }

        // 创建选择对话框
        var dlg = clickData.func.dlg;
        dlg.title = "选择设备";
        dlg.message = "请选择一个设备进行安装:";
        var buttons = "";
       for (var k = 0; k < deviceList.length; k++) {
            if (buttons.length > 0) {
                buttons += "|";
            }
            buttons += deviceList[k].model;
        }
		buttons+="|Cancel";
		DOpus.Output("buttons = "+buttons);
        dlg.buttons = buttons;
        dlg.Show();

         var selectedIndex = dlg.result;
		 DOpus.Output("selectedIndex = "+selectedIndex);
        if (selectedIndex < 1) {
            DOpus.Output("用户未选择任何设备");
            return;
        }
        // 根据选择的索引获取设备ID
        var deviceId = deviceList[selectedIndex-1].id;
        // 执行 adb install 命令
        var apkPath = selectedFile; // 使用选中的 APK 文件路径
        var installCmd = adbPath + " -s " + deviceId + " install " + apkPath;
        DOpus.Output("执行命令: " + installCmd);
        var installExec = WshShell.Exec(installCmd);
        // 等待安装命令完成
        while (installExec.Status == 0) {
            DOpus.Output("等待 adb install 命令完成...");
            DOpus.Delay(500);
        }

        // 输出安装命令的退出代码
        DOpus.Output("adb install 命令退出代码: " + installExec.ExitCode);
         // 输出安装命令的标准输出
        var installOutput = installExec.StdOut.ReadAll();
        DOpus.Output("adb install 命令输出: " + installOutput);
        // 输出安装命令的错误输出
        var installErrorOutput = installExec.StdErr.ReadAll();
        if (installErrorOutput) {
            DOpus.Output("adb install 命令错误输出: " + installErrorOutput);
        }
    } catch (e) {
        // 捕获并输出错误信息
        DOpus.Output("发生错误: " + e.message);
    }
}


安装方法

  1. Directory Opus 13.6 设置->文件类型:

  2. 搜索apk

在这里插入图片描述

  1. 选择新建

在这里插入图片描述

使用

在这里插入图片描述

在这里插入图片描述

选择对应的设备就可以了,存在的问题是会弹出命令行的黑框.但是比输序号还是要方便,优雅一些

另有双击安装的版本

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值