搜 索

给AList添加一个TrollStore(巨魔)跳转安装选项

  • 2.4k阅读
  • 2023年03月07日
  • 0评论
首页 / 日常生活☀ / 正文

前言

AList大家应该有一部分人用过了,我就不说了

然后也支持在线安装IOS软件,但是原本自带的只支持安装Apple原生的

然后去年出了一款可以不越狱也能随意安装IOS IPA应用的软件 TrollStore,机翻就是巨魔助手(有系统要求的喔~)

有一天脑瓜子突然灵光一闪 看到 巨魔支持输入链接进行安装,我就想有没有可能巨魔支持唤醒安装呢?

(唤醒指的就是点击按钮后提示你打开XXX应用...大家应该也熟悉,不过多叙述了)

然后就去 TrollStore 翻了翻还真有~ 格式如下

apple-magnifier://install?url=<URL_to_IPA>

Tips

  • On devices that don't have TrollStore (1.3+) installed, this will just open the magnifier app.
  • 翻译就是:如果你的 TrollStore 不是1.3+ 版本只会打开Apple的放大镜应用

说下这样的好处吧~

原始流程:先从AList下载应用 ---> 找到下载的软件 ---> 点击软件然后选择右上角分享 ---> 找到巨魔图标 ---> 跳进巨魔软件进行安装 ---> 安装好了删除软件

巨魔唤醒安装流程:点击AList巨魔安装按钮击弹窗提示 ---> 进入巨魔应用内等待下载 ---> 下载好然后点击安装按钮即可

  • 省去了手动找软件下载位置,点击右上角分享到巨魔,删除软件 这几个大概的流程(这样安装也没发现会下载到本地)

可能就是懒癌犯了吧.....(bushi

不叨叨了 直接开始说怎么改吧QAQ

开始

本次实现的主要都是在前端界面内,但是由于本人又菜又爱玩...(就是说我是菜鸡...

源码路径:alist-web/src/pages/home/previews/ipa.tsx

我们直接copy一份源码的,在下面加一个新的就行,就如下面完整版的哪个巨魔测试的就是

把里面的格式改改就能用了..

原本我是这样改的... (我自己瞎缝合的 哈哈)

"apple-magnifier://install?url=" + objStore.raw_url

然后发现会 301错误,但是开启Web proxy还是可以用

经过测试发现 objStore.raw_url最后生成的链接是类似中转了 最终链接中的到的是 /p/ 的参数链接

又经过测试发现直接点击复制链接 的到的是 /d/的参数链接,能用,后来我手动把 /d/ 改成/p 发现提示301错误,由此知道了咋修改了

(上面的两条可以不用懂...)

下面就东拼西凑的想办法让参数直接传入复制链接的参数传入到我们需要的位置,然后技术不行不会改(哈哈哈)

找了几个别的大佬都是会Golang后端,不会前端,最后找到了 @侃遍天下无二人 帮忙修改的(因为我是哪个又菜又爱玩技术还不行的菜鸡)

"apple-magnifier://install?url=" + useLink().rawLink(objStore.obj, true)

这样改了能用了...但是后来发现不能安装带中文的路径(测试过的),如下图所示

img

开始以为是 TrollStore 的问题,然后同时我也尝试直接将带中文的链接手动在巨魔助手内进行手动添加能不能下载,结果是可以下载安装(还是我太菜 哈哈)

然后就尝试将Search(浏览器顶部直接复制链接)的链接进行了URL编码同时直接写死测试一下,发现能用了

"apple-magnifier://install?url=http%3A%2F%2F192.168.68.59%3A5244%2Fd%2F139%2F%25E7%25BD%2591%25E9%2580%259F%25E6%2598%25BE%25E7%25A4%25BA%2520-%2520TrollSpeed_1.7.3.tipa%3Fsign%3DDhqFh9SnUPQ9Id74EDlN75AXKJrZxJ95kTESN-aQYL0%3D%3A0"

然后就二次修改将编码进行URL编码一番,@白毛 提到的将链接进行URL编码试试看

"apple-magnifier://install?url=" + encodeURIComponent(useLink().rawLink(objStore.obj, true))

然后再测试可以安装带中文路径的啦~ over 完美解决...

(还有个瑕疵暂时,就是两个按钮绑定的是一样的事件似乎,点击巨魔的按钮 原生的安装按钮也会变哈哈,但是不影响使用 我就懒得改了,主要是不会哈哈哈)

img

PM fix:上面提到的瑕疵修复了...新建一条即可,第一条是原生的,我们在第一条下面新加一条就行..

  const [installing, setInstalling] = createSignal(false)
  const [trInstalling, setTrInstalling] = createSignal(false)

修好了 喏~这次没看到冲突了,但是记得也要给使用的代码中修改了~

          onClick={() => {
            setTrInstalling(true) //原来这里是setInstalling
          }}
        >
          {t(`home.preview.${trInstalling() ? "tr-installing" : "tr-install"}`)} //原来这里是installing

img

我们还要加一个 HStack 呢用 HStackButton 包起来,不然不是一排是竖着排序了...

import导入的时候也要导入一个 HStack 喔~不然不生效的(正常编辑器会提示你的)

img

PM FIX: 然后提交合并...开发者帮我改了下,这样更加符合了嘿嘿

const { currentObjLink } = useLink()

…………………………

            "apple-magnifier://install?url=" + encodeURIComponent(currentObjLink(true))

完整版

import { Button, HStack } from "@hope-ui/solid"
import { createSignal } from "solid-js"
import { useT, useLink } from "~/hooks"
import { objStore } from "~/store"
import { api, baseName, safeBtoa } from "~/utils"
import { FileInfo } from "./info"

const Ipa = () => {
  const t = useT()
  const [installing, setInstalling] = createSignal(false)
  const [trInstalling, setTrInstalling] = createSignal(false)
  const { currentObjLink } = useLink()
  return (
    <FileInfo>
      <HStack spacing="$2">
        <Button
          as="a"
          href={
            "itms-services://?action=download-manifest&url=" +
            `${api}/i/${safeBtoa(
              encodeURIComponent(objStore.raw_url) +
                "/" +
                baseName(encodeURIComponent(objStore.obj.name))
            )}.plist`
          }
          onClick={() => {
            setInstalling(true)
          }}
        >
          {t(`home.preview.${installing() ? "installing" : "install"}`)}
        </Button>
        <Button
          as="a"
          colorScheme="primary"
          href={
            "apple-magnifier://install?url=" +
            encodeURIComponent(currentObjLink(true))
          }
          onClick={() => {
            setTrInstalling(true)
          }}
        >
          {t(`home.preview.${trInstalling() ? "tr-installing" : "tr-install"}`)}
        </Button>
      </HStack>
    </FileInfo>
  )
}
export default Ipa

后续其他

1.安装 tipa 文件

虽然我们安装的是 .ipa 文件,也有一些 .tipa 的也能安装,虽然是越狱用的但是有一些是可以用巨魔安装的

如果你需要可以自行添加

源码位置:alist-web\src\pages\home\previews\index.ts

   name: "Ipa",
   exts: ["ipa", "tipa"],
   component: lazy(() => import("./ipa")),

2.修改 tipa图标

默认的 tipa图标是类似文件的样式不好看

  • 如下图所示,左侧是没加图标之前的右侧是添加图标后

img

源码位置:alist-web\src\utils\icon.ts

大概第45行 添加一个 tipa 后缀进去就行

"dmg,ipa,plist,tipa": BsApple,

如果你想换图标可以在这里找:https://solid-icons.vercel.app/ 怎么用不用说了吧~

3.修改文字显示

可能坛友也发现了我文字显示哪里怎么是巨魔,你显示哪里是安装

因为我也把文字做了修改

我这里只修改了中文语言包,编译的时候把英文也删除了,如果你不删除你需要两个位置都加

中文语言包源码位置:alist-web\src\lang\zh-CN\home.json 只需要自己加后面两个就行前两个是让你知道加在哪里

    "install": "安装",
    "installing": "正在安装",
    "tr-install": "巨魔",
    "tr-installing": "巨魔正在安装"

英文语言包源码位置:alist-web\src\lang\en\home.json 只需要自己加后面两个就行前两个是让你知道加在哪里

    "install": "Install",
    "installing": "Installing",
    "tr-install": "TrollStore",
    "tr-installing": "TrollStore Installing"

语言包改了,前端代码位置也要改一下

源码位置:alist-web\src\pages\home\previews\ipa.tsx

在我们新加的那个按钮里面自己添加就行

          {t(`home.preview.${trInstalling() ? "tr-installing" : "tr-install"}`)}
        </Button>

结束

呃....以上就是这些..感谢给我提供帮助的大佬们~ 么么哒 爱你们

打 赏
  • 支付宝
  • 微信
  • QQ
Alipay
WeChatPay
QQPay
评论区
暂无评论
avatar