开启辅助访问 切换到窄版

打印 上一主题 下一主题

为Windows应用程序制作UOS系统安装包

[复制链接]
作者:蝶儿哼哼 
版块:
嵌入式操作系统 linux 发布时间:2020-9-23 14:00:47
22940
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文虽然针对UOS系统而写,但同样适用于Deepin(深度)Linux系统。
UOS系统目前面临的一个重大问题是缺少应用。因为应用缺乏,很难吸引到用户,而用户数量上不去,又导致软件开发商缺少为之开发应用软件的兴趣。这就是任何一个新系统要构建生态系统所要面临的难题。
为了让Linux系统能运行Windows程序,有人开发出了Wine,这是一个能够在多种 POSIX兼容操作系统(诸如 Linux,Mac OSX 及 BSD 等)上运行 Windows 应用的兼容层。
同样,通过Wine也可以在UOS系统上运行Windows程序。但对于普通用户而言,使用命令行去安装或执行程序,难度有点大,最好是能够做成UOS系统安装包,用户安装之后,通过菜单即可运行。本文就来说一说如何做这样的应用程序安装包。
需要注意的是,Wine对Windows系统的兼容并不是那么完美。有些Windows应用,比如PhotoShop,通过Wine运行就存在很多问题。碰到这样的问题,也没有什么好的解决方法,所以在制作安装包之前,请先确保Windows应用程序在wine下运行无问题。
下面以野狐围棋客户端为例,说明如何制作UOS系统安装包。
首先建一个 Wine 容器:
WINEPREFIX=~/.deepinwine/foxwq deepin-wine5 winecfg
在 Wine 容器中安装应用程序:
WINEPREFIX=~/.deepinwine/foxwq deepin-wine5 ~/Downloads/install.exe
应用程序安装之后,程序相关的文件都安装在 ~/.deepinwine/foxwq 目录下。
应用程序图标最好是SVG格式,如果没有SVG格式,那么就需要准备 16x16、24x24、32x32、48x48、128x128、256x256等大小的图片。一个简单的方法是使用IconExtract应用从Windows应用程序中提取图标。
如果从头开始制作安装包,可能有点费劲。在UOS应用商店中,已经有一些Wine应用,我们可以将它们的包解开,在其基础之上修改。比如UOS应用商店中的,在安装了之后,我们在 /var/cache/apt/archives/ 下可以找到 com.qq.im.deepin_9.3.2deepin4_i386.deb 文件,这个就是 的安装包。
然后,使用如下的命令将安装包解开到 extract 目录下。
dpkg-deb -x com.qq.im.deepin_9.3.2deepin4_i386.deb extract/
dpkg-deb -e com.qq.im.deepin_9.3.2deepin4_i386.deb extract/DEBIAN
首先修改 extract/DEBIAN 目录下的control文件,主要修改 Package、Version、Description几个字段。如果字段用不上,就删除掉,在UOS应用程序打包规范中规定字段值不能为空。
Package: com.mogoweb.apps.foxwq
Version: 2.0.1
Architecture: i386
Maintainer: mogoweb (mogoweb@126.com)
Depends: deepin-wine5 (>= 5.0-deepin0), deepin-wine5-i386 (>= 5.0-deepin0), deepin-wine-helper (>= 5.0deepin0)
Section: non-free/otherosfs
Priority: optional
Multi-Arch: foreign
Description: 野狐围棋客户端,一款用于网络围棋对弈的软件。
然后,修改 extract/opt/apps/ 下的目录名为上面的 Package名(com.mogoweb.apps.foxwq)。修改后的目录结构如下:
foxwq的目录结构
接下来,修改 com.mogoweb.apps.foxwq.desktop 文件:
#!/usr/bin/env xdg-open
Encoding=UTF-8
Type=Application
X-Created-By=Deepin WINE Team
Categories=game;
Icon=com.mogoweb.apps.foxwq
Exec="/opt/apps/com.mogoweb.apps.foxwq/files/run.sh" -u %u
Name=Fox WeiQi
Name=野狐围棋
Comment=一款进行网络围棋对弈的客户端软件
StartupWMClass=foxwq.exe
MimeType=
将步骤 2 中应用程序的图标文件放到对应大小的目录下,并将图片文件名重命名,与上面的 desktop 文件中的 Icon 字段一致。
最后一个要修改的文件是 info:
{
"appid": "com.mogoweb.apps.foxwq",
"name": "野狐围棋",
"version": "2.0.1",
"arch": ,
"permissions": {
"autostart": false,
"notification": false,
"trayicon": true,
"clipboard": true,
"account": false,
"bluetooth": false,
"camera": true,
"audio_record": true,
"installed_apps": false
}
}
将 wine 容器中的文件复制到 files目录下,并将drive_c下的用户名修改为 @current_user@ 。这个非常重要,因为你的系统用户名可能是 alex,到了别的使用者安装时,用户名可能是 tom,这样就对不上。使用 @current_user@ 指代当前用户,安装时会自动进行替换。
cp -r ~/.deepinwine/foxwq/* files/
mv files/drive_c/users/alex files/drive_c/users/@current_user@
使用7z压缩wine容器文件,并移动到 extract/opt/apps/com.mogoweb.apps.foxwq/files/ 目录下:
7z a files.7z /work/debuild/uos/apps/foxwq/files/*
mv files.7z extract/opt/apps/com.mogoweb.apps.foxwq/files/
计算文件的MD5值,并移动到 extract/DEBIAN 目录下:
find extract/opt -type f -print0 |xargs -0 md5sum > md5sums
mv md5sums extract/DEBIAN/md5sums
修改打包文件的所有者:
sudo chown -R root:root extract/opt
新建build目录:
mkdir build
生成deb安装包:
dpkg-deb -b extract/ build/
这样在 build 目录下就可以生成 deb 包,双击就可以通过UOS安装器进行安装。
在制作安装包的过程中,免不了会出错,会修改,要移除安装包,可以使用如下命令:
sudo dpkg -r com.mogoweb.apps.foxwq
rm -rf ~/.deepinwine/foxwq/
怎么样,看到这里,你是否也跃跃欲试,想自己动手制作一款UOS应用程序呢?欢迎加入,为UOS的生态建设添砖加瓦!如果在这个过程中碰到任何问题,都可以和我联系,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表