修改打包脚本
This commit is contained in:
parent
cca3e30b7d
commit
e442278b74
@ -2,6 +2,7 @@
|
||||
## build_1 2025-11-30
|
||||
1. 协议增加最大撕裂的ID
|
||||
2. 页面修改:上下去掉间隙
|
||||
3. 增加了温度传感器数据读取
|
||||
|
||||
# 2.0.4
|
||||
## build_2 2025-11-24
|
||||
|
||||
@ -117,6 +117,30 @@ cat > ${POSTINST_PATH} << 'EOF'
|
||||
|
||||
echo "配置 BeltTearingServer 应用程序..."
|
||||
|
||||
# 创建应用注册目录和文件
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="BeltTearingServer"
|
||||
|
||||
mkdir -p "${REGISTRY_DIR}"
|
||||
touch "${REGISTRY_FILE}"
|
||||
|
||||
# 检查是否是首次安装VR应用
|
||||
FIRST_INSTALL=false
|
||||
if [ ! -s "${REGISTRY_FILE}" ]; then
|
||||
FIRST_INSTALL=true
|
||||
echo "检测到首次安装VR应用,将安装公共资源..."
|
||||
fi
|
||||
|
||||
# 如果不是首次安装,公共库已经配置过,只需要更新
|
||||
if [ "${FIRST_INSTALL}" = true ]; then
|
||||
echo "配置公共库路径..."
|
||||
ldconfig
|
||||
else
|
||||
echo "公共库已存在,仅更新配置..."
|
||||
ldconfig
|
||||
fi
|
||||
|
||||
# 安装并启用 belttearingserver.service
|
||||
SERVICE_FILE="/opt/belttearingserver/belttearingserver.service"
|
||||
TARGET_SERVICE_FILE="/etc/systemd/system/belttearingserver.service"
|
||||
@ -149,7 +173,16 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 注册应用到系统
|
||||
if ! grep -q "^${APP_NAME}$" "${REGISTRY_FILE}"; then
|
||||
echo "${APP_NAME}" >> "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已注册到系统"
|
||||
else
|
||||
echo "应用 ${APP_NAME} 已经注册,跳过..."
|
||||
fi
|
||||
|
||||
echo "BeltTearingServer 应用程序安装完成!"
|
||||
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
|
||||
EOF
|
||||
|
||||
@ -163,11 +196,45 @@ cat > ${POSTRM_PATH} << 'EOF'
|
||||
|
||||
echo "卸载 BeltTearingServer 应用程序..."
|
||||
|
||||
# 应用注册信息
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="BeltTearingServer"
|
||||
|
||||
# 停止并禁用 belttearingserver.service
|
||||
systemctl stop belttearingserver.service 2>/dev/null || true
|
||||
systemctl disable belttearingserver.service 2>/dev/null || true
|
||||
rm -f /etc/systemd/system/belttearingserver.service
|
||||
|
||||
# 从注册表中移除应用
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
sed -i "/^${APP_NAME}$/d" "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已从系统注册表中移除"
|
||||
fi
|
||||
|
||||
# 检查是否还有其他VR应用在使用公共资源
|
||||
REMAINING_APPS=0
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
REMAINING_APPS=$(grep -c . "${REGISTRY_FILE}" 2>/dev/null || echo "0")
|
||||
fi
|
||||
|
||||
echo "系统中剩余的VR应用数量: ${REMAINING_APPS}"
|
||||
|
||||
# 如果没有其他应用了,清理公共资源
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "没有其他VR应用,开始清理公共资源..."
|
||||
|
||||
# 清理注册目录
|
||||
rm -rf "${REGISTRY_DIR}"
|
||||
|
||||
echo "公共资源已清理"
|
||||
else
|
||||
echo "系统中还有 ${REMAINING_APPS} 个VR应用在运行,保留公共资源"
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
echo "剩余应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 重新加载systemd
|
||||
systemctl daemon-reload
|
||||
|
||||
@ -181,6 +248,11 @@ else
|
||||
fi
|
||||
|
||||
echo "BeltTearingServer 应用程序卸载完成!"
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "所有VR应用已卸载,公共资源已清理"
|
||||
else
|
||||
echo "公共资源已保留供其他VR应用使用"
|
||||
fi
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
@ -134,17 +134,39 @@ cat > ${POSTINST_PATH} << 'EOF'
|
||||
|
||||
echo "配置 GrabBag 应用程序..."
|
||||
|
||||
# 设置库文件路径
|
||||
# 创建应用注册目录和文件
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="GrabBag"
|
||||
|
||||
mkdir -p "${REGISTRY_DIR}"
|
||||
touch "${REGISTRY_FILE}"
|
||||
|
||||
# 检查是否是首次安装VR应用
|
||||
FIRST_INSTALL=false
|
||||
if [ ! -s "${REGISTRY_FILE}" ]; then
|
||||
FIRST_INSTALL=true
|
||||
echo "检测到首次安装VR应用,将安装公共资源..."
|
||||
fi
|
||||
|
||||
# 设置库文件路径(每个应用独立配置)
|
||||
echo "/usr/lib" > /etc/ld.so.conf.d/grabbag.conf
|
||||
echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/grabbag.conf
|
||||
|
||||
# 如果不是首次安装,公共库已经配置过,只需要更新
|
||||
if [ "${FIRST_INSTALL}" = true ]; then
|
||||
echo "配置公共库路径..."
|
||||
ldconfig
|
||||
else
|
||||
echo "公共库已存在,仅更新配置..."
|
||||
ldconfig
|
||||
fi
|
||||
|
||||
# 确保应用程序可执行
|
||||
chmod +x /usr/local/bin/GrabBagApp
|
||||
|
||||
# 配置端口映射 502 -> 5020
|
||||
echo "配置端口映射 502 -> 5020..."
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
|
||||
|
||||
# 检查并创建systemd服务确保重启后规则生效
|
||||
if [ ! -f /etc/systemd/system/vr-port-mapping.service ]; then
|
||||
@ -172,6 +194,14 @@ else
|
||||
systemctl start vr-port-mapping.service 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 检查iptables规则是否已存在
|
||||
if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then
|
||||
echo "添加iptables端口映射规则..."
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
|
||||
else
|
||||
echo "iptables规则已存在,跳过添加..."
|
||||
fi
|
||||
|
||||
# 检查并创建当前用户的桌面快捷方式
|
||||
echo "检查当前用户的桌面快捷方式..."
|
||||
|
||||
@ -222,12 +252,21 @@ else
|
||||
echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建"
|
||||
fi
|
||||
|
||||
# 注册应用到系统
|
||||
if ! grep -q "^${APP_NAME}$" "${REGISTRY_FILE}"; then
|
||||
echo "${APP_NAME}" >> "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已注册到系统"
|
||||
else
|
||||
echo "应用 ${APP_NAME} 已经注册,跳过..."
|
||||
fi
|
||||
|
||||
echo "GrabBag 应用程序安装完成!"
|
||||
echo "应用程序将在用户登录桌面后自动启动。"
|
||||
echo "端口映射已配置:502 -> 5020"
|
||||
echo "桌面快捷方式已创建(如果用户有Desktop目录)"
|
||||
echo "如需立即启动,请运行: /usr/local/bin/GrabBagApp"
|
||||
echo "如需禁用自启动,请删除文件: ~/.config/autostart/grabbag.desktop"
|
||||
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
EOF
|
||||
|
||||
chmod +x ${POSTINST_PATH}
|
||||
@ -240,9 +279,31 @@ cat > ${POSTRM_PATH} << 'EOF'
|
||||
|
||||
echo "卸载 GrabBag 应用程序..."
|
||||
|
||||
# 清理库文件配置
|
||||
# 应用注册信息
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="GrabBag"
|
||||
|
||||
# 从注册表中移除应用
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
sed -i "/^${APP_NAME}$/d" "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已从系统注册表中移除"
|
||||
fi
|
||||
|
||||
# 清理应用专属的库文件配置
|
||||
rm -f /etc/ld.so.conf.d/grabbag.conf
|
||||
ldconfig
|
||||
|
||||
# 检查是否还有其他VR应用在使用公共资源
|
||||
REMAINING_APPS=0
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
REMAINING_APPS=$(grep -c . "${REGISTRY_FILE}" 2>/dev/null || echo "0")
|
||||
fi
|
||||
|
||||
echo "系统中剩余的VR应用数量: ${REMAINING_APPS}"
|
||||
|
||||
# 如果没有其他应用了,清理公共资源
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "没有其他VR应用,开始清理公共资源..."
|
||||
|
||||
# 清理端口映射配置
|
||||
echo "清理端口映射配置..."
|
||||
@ -253,6 +314,20 @@ rm -f /etc/systemd/system/vr-port-mapping.service
|
||||
# 清理iptables规则
|
||||
iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true
|
||||
|
||||
# 清理注册目录
|
||||
rm -rf "${REGISTRY_DIR}"
|
||||
|
||||
echo "公共资源已清理"
|
||||
else
|
||||
echo "系统中还有 ${REMAINING_APPS} 个VR应用在运行,保留公共资源"
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
echo "剩余应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 更新库缓存
|
||||
ldconfig
|
||||
|
||||
# 重新加载systemd
|
||||
systemctl daemon-reload
|
||||
|
||||
@ -289,7 +364,11 @@ if [ "$shortcut_found" = false ]; then
|
||||
fi
|
||||
|
||||
echo "GrabBag 应用程序卸载完成!"
|
||||
echo "端口映射配置已清理"
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "所有VR应用已卸载,公共资源已清理"
|
||||
else
|
||||
echo "公共资源已保留供其他VR应用使用"
|
||||
fi
|
||||
echo "桌面快捷方式已清理"
|
||||
echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/grabbag.desktop"
|
||||
EOF
|
||||
|
||||
@ -135,17 +135,39 @@ cat > ${POSTINST_PATH} << 'EOF'
|
||||
|
||||
echo "配置 LapWeld 应用程序..."
|
||||
|
||||
# 设置库文件路径
|
||||
# 创建应用注册目录和文件
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="LapWeld"
|
||||
|
||||
mkdir -p "${REGISTRY_DIR}"
|
||||
touch "${REGISTRY_FILE}"
|
||||
|
||||
# 检查是否是首次安装VR应用
|
||||
FIRST_INSTALL=false
|
||||
if [ ! -s "${REGISTRY_FILE}" ]; then
|
||||
FIRST_INSTALL=true
|
||||
echo "检测到首次安装VR应用,将安装公共资源..."
|
||||
fi
|
||||
|
||||
# 设置库文件路径(每个应用独立配置)
|
||||
echo "/usr/lib" > /etc/ld.so.conf.d/lapweld.conf
|
||||
echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/lapweld.conf
|
||||
|
||||
# 如果不是首次安装,公共库已经配置过,只需要更新
|
||||
if [ "${FIRST_INSTALL}" = true ]; then
|
||||
echo "配置公共库路径..."
|
||||
ldconfig
|
||||
else
|
||||
echo "公共库已存在,仅更新配置..."
|
||||
ldconfig
|
||||
fi
|
||||
|
||||
# 确保应用程序可执行
|
||||
chmod +x /usr/local/bin/LapWeldApp
|
||||
|
||||
# 配置端口映射 502 -> 5020
|
||||
echo "配置端口映射 502 -> 5020..."
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
|
||||
|
||||
# 检查并创建systemd服务确保重启后规则生效
|
||||
if [ ! -f /etc/systemd/system/vr-port-mapping.service ]; then
|
||||
@ -173,6 +195,14 @@ else
|
||||
systemctl start vr-port-mapping.service 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 检查iptables规则是否已存在
|
||||
if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then
|
||||
echo "添加iptables端口映射规则..."
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
|
||||
else
|
||||
echo "iptables规则已存在,跳过添加..."
|
||||
fi
|
||||
|
||||
# 检查并创建当前用户的桌面快捷方式
|
||||
echo "检查当前用户的桌面快捷方式..."
|
||||
|
||||
@ -223,12 +253,21 @@ else
|
||||
echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建"
|
||||
fi
|
||||
|
||||
# 注册应用到系统
|
||||
if ! grep -q "^${APP_NAME}$" "${REGISTRY_FILE}"; then
|
||||
echo "${APP_NAME}" >> "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已注册到系统"
|
||||
else
|
||||
echo "应用 ${APP_NAME} 已经注册,跳过..."
|
||||
fi
|
||||
|
||||
echo "LapWeld 应用程序安装完成!"
|
||||
echo "应用程序将在用户登录桌面后自动启动。"
|
||||
echo "端口映射已配置:502 -> 5020"
|
||||
echo "桌面快捷方式已创建(如果用户有Desktop目录)"
|
||||
echo "如需立即启动,请运行: /usr/local/bin/LapWeldApp"
|
||||
echo "如需禁用自启动,请删除文件: ~/.config/autostart/lapweld.desktop"
|
||||
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
EOF
|
||||
|
||||
chmod +x ${POSTINST_PATH}
|
||||
@ -241,9 +280,31 @@ cat > ${POSTRM_PATH} << 'EOF'
|
||||
|
||||
echo "卸载 LapWeld 应用程序..."
|
||||
|
||||
# 清理库文件配置
|
||||
# 应用注册信息
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="LapWeld"
|
||||
|
||||
# 从注册表中移除应用
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
sed -i "/^${APP_NAME}$/d" "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已从系统注册表中移除"
|
||||
fi
|
||||
|
||||
# 清理应用专属的库文件配置
|
||||
rm -f /etc/ld.so.conf.d/lapweld.conf
|
||||
ldconfig
|
||||
|
||||
# 检查是否还有其他VR应用在使用公共资源
|
||||
REMAINING_APPS=0
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
REMAINING_APPS=$(grep -c . "${REGISTRY_FILE}" 2>/dev/null || echo "0")
|
||||
fi
|
||||
|
||||
echo "系统中剩余的VR应用数量: ${REMAINING_APPS}"
|
||||
|
||||
# 如果没有其他应用了,清理公共资源
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "没有其他VR应用,开始清理公共资源..."
|
||||
|
||||
# 清理端口映射配置
|
||||
echo "清理端口映射配置..."
|
||||
@ -254,6 +315,20 @@ rm -f /etc/systemd/system/vr-port-mapping.service
|
||||
# 清理iptables规则
|
||||
iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true
|
||||
|
||||
# 清理注册目录
|
||||
rm -rf "${REGISTRY_DIR}"
|
||||
|
||||
echo "公共资源已清理"
|
||||
else
|
||||
echo "系统中还有 ${REMAINING_APPS} 个VR应用在运行,保留公共资源"
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
echo "剩余应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 更新库缓存
|
||||
ldconfig
|
||||
|
||||
# 重新加载systemd
|
||||
systemctl daemon-reload
|
||||
|
||||
@ -290,7 +365,11 @@ if [ "$shortcut_found" = false ]; then
|
||||
fi
|
||||
|
||||
echo "LapWeld 应用程序卸载完成!"
|
||||
echo "端口映射配置已清理"
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "所有VR应用已卸载,公共资源已清理"
|
||||
else
|
||||
echo "公共资源已保留供其他VR应用使用"
|
||||
fi
|
||||
echo "桌面快捷方式已清理"
|
||||
echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/lapweld.desktop"
|
||||
EOF
|
||||
|
||||
@ -134,17 +134,39 @@ cat > ${POSTINST_PATH} << 'EOF'
|
||||
|
||||
echo "配置 ParticleSize 应用程序..."
|
||||
|
||||
# 设置库文件路径
|
||||
# 创建应用注册目录和文件
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="ParticleSize"
|
||||
|
||||
mkdir -p "${REGISTRY_DIR}"
|
||||
touch "${REGISTRY_FILE}"
|
||||
|
||||
# 检查是否是首次安装VR应用
|
||||
FIRST_INSTALL=false
|
||||
if [ ! -s "${REGISTRY_FILE}" ]; then
|
||||
FIRST_INSTALL=true
|
||||
echo "检测到首次安装VR应用,将安装公共资源..."
|
||||
fi
|
||||
|
||||
# 设置库文件路径(每个应用独立配置)
|
||||
echo "/usr/lib" > /etc/ld.so.conf.d/particlesize.conf
|
||||
echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/particlesize.conf
|
||||
|
||||
# 如果不是首次安装,公共库已经配置过,只需要更新
|
||||
if [ "${FIRST_INSTALL}" = true ]; then
|
||||
echo "配置公共库路径..."
|
||||
ldconfig
|
||||
else
|
||||
echo "公共库已存在,仅更新配置..."
|
||||
ldconfig
|
||||
fi
|
||||
|
||||
# 确保应用程序可执行
|
||||
chmod +x /usr/local/bin/ParticleSizeApp
|
||||
|
||||
# 配置端口映射 502 -> 5020
|
||||
echo "配置端口映射 502 -> 5020..."
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
|
||||
|
||||
# 检查并创建systemd服务确保重启后规则生效
|
||||
if [ ! -f /etc/systemd/system/vr-port-mapping.service ]; then
|
||||
@ -172,6 +194,14 @@ else
|
||||
systemctl start vr-port-mapping.service 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 检查iptables规则是否已存在
|
||||
if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then
|
||||
echo "添加iptables端口映射规则..."
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
|
||||
else
|
||||
echo "iptables规则已存在,跳过添加..."
|
||||
fi
|
||||
|
||||
# 检查并创建当前用户的桌面快捷方式
|
||||
echo "检查当前用户的桌面快捷方式..."
|
||||
|
||||
@ -222,12 +252,21 @@ else
|
||||
echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建"
|
||||
fi
|
||||
|
||||
# 注册应用到系统
|
||||
if ! grep -q "^${APP_NAME}$" "${REGISTRY_FILE}"; then
|
||||
echo "${APP_NAME}" >> "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已注册到系统"
|
||||
else
|
||||
echo "应用 ${APP_NAME} 已经注册,跳过..."
|
||||
fi
|
||||
|
||||
echo "ParticleSize 应用程序安装完成!"
|
||||
echo "应用程序将在用户登录桌面后自动启动。"
|
||||
echo "端口映射已配置:502 -> 5020"
|
||||
echo "桌面快捷方式已创建(如果用户有Desktop目录)"
|
||||
echo "如需立即启动,请运行: /usr/local/bin/ParticleSizeApp"
|
||||
echo "如需禁用自启动,请删除文件: ~/.config/autostart/particlesize.desktop"
|
||||
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
EOF
|
||||
|
||||
chmod +x ${POSTINST_PATH}
|
||||
@ -240,9 +279,31 @@ cat > ${POSTRM_PATH} << 'EOF'
|
||||
|
||||
echo "卸载 ParticleSize 应用程序..."
|
||||
|
||||
# 清理库文件配置
|
||||
# 应用注册信息
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="ParticleSize"
|
||||
|
||||
# 从注册表中移除应用
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
sed -i "/^${APP_NAME}$/d" "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已从系统注册表中移除"
|
||||
fi
|
||||
|
||||
# 清理应用专属的库文件配置
|
||||
rm -f /etc/ld.so.conf.d/particlesize.conf
|
||||
ldconfig
|
||||
|
||||
# 检查是否还有其他VR应用在使用公共资源
|
||||
REMAINING_APPS=0
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
REMAINING_APPS=$(grep -c . "${REGISTRY_FILE}" 2>/dev/null || echo "0")
|
||||
fi
|
||||
|
||||
echo "系统中剩余的VR应用数量: ${REMAINING_APPS}"
|
||||
|
||||
# 如果没有其他应用了,清理公共资源
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "没有其他VR应用,开始清理公共资源..."
|
||||
|
||||
# 清理端口映射配置
|
||||
echo "清理端口映射配置..."
|
||||
@ -253,6 +314,20 @@ rm -f /etc/systemd/system/vr-port-mapping.service
|
||||
# 清理iptables规则
|
||||
iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true
|
||||
|
||||
# 清理注册目录
|
||||
rm -rf "${REGISTRY_DIR}"
|
||||
|
||||
echo "公共资源已清理"
|
||||
else
|
||||
echo "系统中还有 ${REMAINING_APPS} 个VR应用在运行,保留公共资源"
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
echo "剩余应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 更新库缓存
|
||||
ldconfig
|
||||
|
||||
# 重新加载systemd
|
||||
systemctl daemon-reload
|
||||
|
||||
@ -289,7 +364,11 @@ if [ "$shortcut_found" = false ]; then
|
||||
fi
|
||||
|
||||
echo "ParticleSize 应用程序卸载完成!"
|
||||
echo "端口映射配置已清理"
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "所有VR应用已卸载,公共资源已清理"
|
||||
else
|
||||
echo "公共资源已保留供其他VR应用使用"
|
||||
fi
|
||||
echo "桌面快捷方式已清理"
|
||||
echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/particlesize.desktop"
|
||||
EOF
|
||||
|
||||
@ -134,17 +134,39 @@ cat > ${POSTINST_PATH} << 'EOF'
|
||||
|
||||
echo "配置 Workpiece 应用程序..."
|
||||
|
||||
# 设置库文件路径
|
||||
# 创建应用注册目录和文件
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="Workpiece"
|
||||
|
||||
mkdir -p "${REGISTRY_DIR}"
|
||||
touch "${REGISTRY_FILE}"
|
||||
|
||||
# 检查是否是首次安装VR应用
|
||||
FIRST_INSTALL=false
|
||||
if [ ! -s "${REGISTRY_FILE}" ]; then
|
||||
FIRST_INSTALL=true
|
||||
echo "检测到首次安装VR应用,将安装公共资源..."
|
||||
fi
|
||||
|
||||
# 设置库文件路径(每个应用独立配置)
|
||||
echo "/usr/lib" > /etc/ld.so.conf.d/workpiece.conf
|
||||
echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/workpiece.conf
|
||||
|
||||
# 如果不是首次安装,公共库已经配置过,只需要更新
|
||||
if [ "${FIRST_INSTALL}" = true ]; then
|
||||
echo "配置公共库路径..."
|
||||
ldconfig
|
||||
else
|
||||
echo "公共库已存在,仅更新配置..."
|
||||
ldconfig
|
||||
fi
|
||||
|
||||
# 确保应用程序可执行
|
||||
chmod +x /usr/local/bin/WorkpieceApp
|
||||
|
||||
# 配置端口映射 502 -> 5020
|
||||
echo "配置端口映射 502 -> 5020..."
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
|
||||
|
||||
# 检查并创建systemd服务确保重启后规则生效
|
||||
if [ ! -f /etc/systemd/system/vr-port-mapping.service ]; then
|
||||
@ -172,6 +194,14 @@ else
|
||||
systemctl start vr-port-mapping.service 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 检查iptables规则是否已存在
|
||||
if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then
|
||||
echo "添加iptables端口映射规则..."
|
||||
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
|
||||
else
|
||||
echo "iptables规则已存在,跳过添加..."
|
||||
fi
|
||||
|
||||
# 检查并创建当前用户的桌面快捷方式
|
||||
echo "检查当前用户的桌面快捷方式..."
|
||||
|
||||
@ -222,12 +252,21 @@ else
|
||||
echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建"
|
||||
fi
|
||||
|
||||
# 注册应用到系统
|
||||
if ! grep -q "^${APP_NAME}$" "${REGISTRY_FILE}"; then
|
||||
echo "${APP_NAME}" >> "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已注册到系统"
|
||||
else
|
||||
echo "应用 ${APP_NAME} 已经注册,跳过..."
|
||||
fi
|
||||
|
||||
echo "Workpiece 应用程序安装完成!"
|
||||
echo "应用程序将在用户登录桌面后自动启动。"
|
||||
echo "端口映射已配置:502 -> 5020"
|
||||
echo "桌面快捷方式已创建(如果用户有Desktop目录)"
|
||||
echo "如需立即启动,请运行: /usr/local/bin/WorkpieceApp"
|
||||
echo "如需禁用自启动,请删除文件: ~/.config/autostart/workpiece.desktop"
|
||||
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
EOF
|
||||
|
||||
chmod +x ${POSTINST_PATH}
|
||||
@ -240,9 +279,31 @@ cat > ${POSTRM_PATH} << 'EOF'
|
||||
|
||||
echo "卸载 Workpiece 应用程序..."
|
||||
|
||||
# 清理库文件配置
|
||||
# 应用注册信息
|
||||
REGISTRY_DIR="/var/lib/vr-apps"
|
||||
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
|
||||
APP_NAME="Workpiece"
|
||||
|
||||
# 从注册表中移除应用
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
sed -i "/^${APP_NAME}$/d" "${REGISTRY_FILE}"
|
||||
echo "应用 ${APP_NAME} 已从系统注册表中移除"
|
||||
fi
|
||||
|
||||
# 清理应用专属的库文件配置
|
||||
rm -f /etc/ld.so.conf.d/workpiece.conf
|
||||
ldconfig
|
||||
|
||||
# 检查是否还有其他VR应用在使用公共资源
|
||||
REMAINING_APPS=0
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
REMAINING_APPS=$(grep -c . "${REGISTRY_FILE}" 2>/dev/null || echo "0")
|
||||
fi
|
||||
|
||||
echo "系统中剩余的VR应用数量: ${REMAINING_APPS}"
|
||||
|
||||
# 如果没有其他应用了,清理公共资源
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "没有其他VR应用,开始清理公共资源..."
|
||||
|
||||
# 清理端口映射配置
|
||||
echo "清理端口映射配置..."
|
||||
@ -253,6 +314,20 @@ rm -f /etc/systemd/system/vr-port-mapping.service
|
||||
# 清理iptables规则
|
||||
iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true
|
||||
|
||||
# 清理注册目录
|
||||
rm -rf "${REGISTRY_DIR}"
|
||||
|
||||
echo "公共资源已清理"
|
||||
else
|
||||
echo "系统中还有 ${REMAINING_APPS} 个VR应用在运行,保留公共资源"
|
||||
if [ -f "${REGISTRY_FILE}" ]; then
|
||||
echo "剩余应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 更新库缓存
|
||||
ldconfig
|
||||
|
||||
# 重新加载systemd
|
||||
systemctl daemon-reload
|
||||
|
||||
@ -289,7 +364,11 @@ if [ "$shortcut_found" = false ]; then
|
||||
fi
|
||||
|
||||
echo "Workpiece 应用程序卸载完成!"
|
||||
echo "端口映射配置已清理"
|
||||
if [ "${REMAINING_APPS}" -eq 0 ]; then
|
||||
echo "所有VR应用已卸载,公共资源已清理"
|
||||
else
|
||||
echo "公共资源已保留供其他VR应用使用"
|
||||
fi
|
||||
echo "桌面快捷方式已清理"
|
||||
echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/workpiece.desktop"
|
||||
EOF
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user