给AList添加一个TrollStore(巨魔)跳转安装选项(已合并后续会实装)
本帖最后由 anwen 于 2023-3-8 09:35 编辑# 前言
[**AList**](https://github.com/alist-org/alist)大家应该有一部分人用过了,我就不说了
然后也支持在线安装IOS软件,但是原本自带的只支持安装Apple原生的
然后去年出了一款可以不越狱也能随意安装IOS IPA应用的软件 [**TrollStore**](https://github.com/opa334/TrollStore),机翻就是巨魔助手(有系统要求的喔~)
有一天脑瓜子突然灵光一闪 看到 巨魔支持输入链接进行安装,我就想有没有可能巨魔支持唤醒安装呢?
(唤醒指的就是点击按钮后提示你打开XXX应用...大家应该也熟悉,不过多叙述了)
然后就去 **TrollStore** 翻了翻还真有~ 格式如下
```html
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一份源码的,在下面加一个新的就行,就如下面[完整版](#完整版)的哪个巨魔测试的就是
把里面的格式改改就能用了..
原本我是这样改的... (我自己瞎缝合的 哈哈)
```tsx
"apple-magnifier://install?url=" + objStore.raw_url
```
然后发现会 301错误,但是开启Web proxy还是可以用
经过测试发现 `objStore.raw_url`最后生成的链接是类似中转了 最终链接中的到的是 `/p/` 的参数链接
又经过测试发现直接点击复制链接 的到的是 `/d/`的参数链接,能用,后来我手动把 `/d/` 改成`/p` 发现提示301错误,由此知道了咋修改了
(上面的两条可以不用懂...)
下面就东拼西凑的想办法让参数直接传入复制链接的参数传入到我们需要的位置,然后技术不行不会改(哈哈哈)
找了几个别的大佬都是会Golang后端,不会前端,最后找到了 **@侃遍天下无二人** 帮忙修改的(因为我是哪个又菜又爱玩技术还不行的菜鸡)
```tsx
"apple-magnifier://install?url=" + useLink().rawLink(objStore.obj, true)
```
这样改了能用了...但是后来发现不能安装带中文的路径(测试过的),如下图所示
!(https://pic.rmb.bdstatic.com/bjh/7fc929d1b690364b00e6d96c2c74eee9.png@s_0,w_1242)
开始以为是 TrollStore 的问题,然后同时我也尝试直接将带中文的链接手动在巨魔助手内进行手动添加能不能下载,结果是可以下载安装(还是我太菜 哈哈)
然后就尝试将Search(浏览器顶部直接复制链接)的链接进行了URL编码同时直接写死测试一下,发现能用了
```tsx
"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编码试试看
```tsx
"apple-magnifier://install?url=" + encodeURIComponent(useLink().rawLink(objStore.obj, true))
```
然后再测试可以安装带中文路径的啦~ over 完美解决...
~~(还有个瑕疵暂时,就是两个按钮绑定的是一样的事件似乎,点击巨魔的按钮 原生的安装按钮也会变哈哈,但是不影响使用 我就懒得改了,主要是不会哈哈哈)~~
!(https://pic.rmb.bdstatic.com/bjh/d941dff04c7d1dc242b0f2bdd45fe8ad.gif)
**PM fix**:上面提到的瑕疵修复了...新建一条即可,第一条是原生的,我们在第一条下面新加一条就行..
```tsx
const = createSignal(false)
const = createSignal(false)
```
修好了 喏~这次没看到冲突了,但是记得也要给使用的代码中修改了~
```tsx
onClick={() => {
setTrInstalling(true) //原来这里是setInstalling
}}
>
{t(`home.preview.${trInstalling() ? "tr-installing" : "tr-install"}`)} //原来这里是installing
```
!(https://pic.rmb.bdstatic.com/bjh/87322c42fc28a23bd0c3b3e0a91ee23e.gif)
我们还要加一个 <HStack>呢用<HStack>把<Button>包起来,不然不是一排是竖着排序了...
import导入的时候也要导入一个 **HStack** 喔~不然不生效的(正常编辑器会提示你的)
!(https://pic.rmb.bdstatic.com/bjh/a33af8f08af6a0962410359b50e16ca1.png)
**PM FIX:** 然后提交合并...开发者帮我改了下,这样更加符合了嘿嘿
```tsx
const { currentObjLink } = useLink()
…………………………
"apple-magnifier://install?url=" + encodeURIComponent(currentObjLink(true))
```
### 完整版
```tsx
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 = createSignal(false)
const = 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**
```ts
name: "Ipa",
exts: ["ipa", "tipa"],
component: lazy(() => import("./ipa")),
```
#### 2.修改 tipa图标
默认的 tipa图标是类似文件的样式不好看
- 如下图所示,左侧是没加图标之前的右侧是添加图标后
!(https://pic.rmb.bdstatic.com/bjh/d55257eb6152faa65d0865952d4c190a.png)
源码位置:**alist-web\src\utils\icon.ts**
大概第45行 添加一个 **`tipa`** 后缀进去就行
```ts
"dmg,ipa,plist,tipa": BsApple,
```
如果你想换图标可以在这里找:**https://solid-icons.vercel.app/** 怎么用不用说了吧~
#### 3.修改文字显示
可能坛友也发现了我文字显示哪里怎么是巨魔,你显示哪里是安装
因为我也把文字做了修改
我这里只修改了中文语言包,编译的时候把英文也删除了,如果你不删除你需要两个位置都加
> 中文语言包源码位置:**alist-web\src\lang\zh-CN\home.json** 只需要自己加后面两个就行前两个是让你知道加在哪里
>
> ```json
> "install": "安装",
> "installing": "正在安装",
> "tr-install": "巨魔",
> "tr-installing": "巨魔正在安装"
> ```
>
> 英文语言包源码位置:**alist-web\src\lang\en\home.json**只需要自己加后面两个就行前两个是让你知道加在哪里
>
> ```json
> "install": "Install",
> "installing": "Installing",
> "tr-install": "TrollStore",
> "tr-installing": "TrollStore Installing"
> ```
语言包改了,前端代码位置也要改一下
源码位置:**alist-web\src\pages\home\previews\ipa.tsx**
在我们新加的那个按钮里面自己添加就行
```tsx
{t(`home.preview.${trInstalling() ? "tr-installing" : "tr-install"}`)}
</Button>
```
# 结束
呃....以上就是这些..感谢给我提供帮助的大佬们~ 么么哒 爱你们 zys724 发表于 2023-3-7 13:54
大佬,这些ipa包从哪里来,特别是定位的找不到
私发你消息了,,,私信居然要扣5个CB。。。心疼~ 本帖最后由 anwen 于 2023-3-7 15:39 编辑
igroot520 发表于 2023-3-7 15:36
完犊子,我是用的alist一键安装的,我还没找到前端在哪里
{:301_1009:} 等下个版本吧~ 下个版本就合并了 已经pr进去啦
{:301_984:}考虑到层主都不知道前端在哪里 哈哈 估计自己编译也够呛QAQ~~~~ 等下个版本吧 哈哈 感谢大佬分享 感谢分享。16.3的用户表示羡慕~~~ 晴朗的秋天 发表于 2023-3-7 12:48
感谢分享。16.3的用户表示羡慕~~~
{:301_1004:} 开始的时候TrollStore也不支持 15.4.1...我都差点准备升级了 还好等来了希望 anwen 发表于 2023-3-7 12:52
开始的时候TrollStore也不支持 15.4.1...我都差点准备升级了 还好等来了希望
我之前用12,用TrollStore用得非常爽,安装虚拟定位、安装喜欢的字体。
后来换了14PM, 为了灵动岛,啥都没有了。。。哭唧唧 本帖最后由 anwen 于 2023-3-7 13:08 编辑
晴朗的秋天 发表于 2023-3-7 12:58
我之前用12,用TrollStore用得非常爽,安装虚拟定位、安装喜欢的字体。
后来换了14PM, 为了灵动岛,啥 ...
{:301_1004:} 12继续用~哈哈 灵动岛一边站 哈哈~ 要是14也支持TrollStore销量肯定不少 有几个图片不能查看了? xiaotuxt 发表于 2023-3-7 13:44
有几个图片不能查看了?
可能图床屏蔽了 换图源了这次呢{:301_1009:} 晴朗的秋天 发表于 2023-3-7 12:58
我之前用12,用TrollStore用得非常爽,安装虚拟定位、安装喜欢的字体。
后来换了14PM, 为了灵动岛,啥 ...
大佬,这些ipa包从哪里来,特别是定位的找不到{:301_971:} zys724 发表于 2023-3-7 13:54
大佬,这些ipa包从哪里来,特别是定位的找不到
我不敢发链接,怕被封ID。。。