修改打包脚本

This commit is contained in:
yiyi 2025-12-01 21:35:49 +08:00
parent cca3e30b7d
commit e442278b74
6 changed files with 448 additions and 59 deletions

View File

@ -2,6 +2,7 @@
## build_1 2025-11-30 ## build_1 2025-11-30
1. 协议增加最大撕裂的ID 1. 协议增加最大撕裂的ID
2. 页面修改:上下去掉间隙 2. 页面修改:上下去掉间隙
3. 增加了温度传感器数据读取
# 2.0.4 # 2.0.4
## build_2 2025-11-24 ## build_2 2025-11-24

View File

@ -117,6 +117,30 @@ cat > ${POSTINST_PATH} << 'EOF'
echo "配置 BeltTearingServer 应用程序..." 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 # 安装并启用 belttearingserver.service
SERVICE_FILE="/opt/belttearingserver/belttearingserver.service" SERVICE_FILE="/opt/belttearingserver/belttearingserver.service"
TARGET_SERVICE_FILE="/etc/systemd/system/belttearingserver.service" TARGET_SERVICE_FILE="/etc/systemd/system/belttearingserver.service"
@ -149,7 +173,16 @@ else
exit 1 exit 1
fi 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 "BeltTearingServer 应用程序安装完成!"
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
EOF EOF
@ -163,11 +196,45 @@ cat > ${POSTRM_PATH} << 'EOF'
echo "卸载 BeltTearingServer 应用程序..." echo "卸载 BeltTearingServer 应用程序..."
# 应用注册信息
REGISTRY_DIR="/var/lib/vr-apps"
REGISTRY_FILE="${REGISTRY_DIR}/installed-apps.list"
APP_NAME="BeltTearingServer"
# 停止并禁用 belttearingserver.service # 停止并禁用 belttearingserver.service
systemctl stop belttearingserver.service 2>/dev/null || true systemctl stop belttearingserver.service 2>/dev/null || true
systemctl disable belttearingserver.service 2>/dev/null || true systemctl disable belttearingserver.service 2>/dev/null || true
rm -f /etc/systemd/system/belttearingserver.service 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 # 重新加载systemd
systemctl daemon-reload systemctl daemon-reload
@ -181,6 +248,11 @@ else
fi fi
echo "BeltTearingServer 应用程序卸载完成!" echo "BeltTearingServer 应用程序卸载完成!"
if [ "${REMAINING_APPS}" -eq 0 ]; then
echo "所有VR应用已卸载公共资源已清理"
else
echo "公共资源已保留供其他VR应用使用"
fi
EOF EOF

View File

@ -134,17 +134,39 @@ cat > ${POSTINST_PATH} << 'EOF'
echo "配置 GrabBag 应用程序..." 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 "/usr/lib" > /etc/ld.so.conf.d/grabbag.conf
echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/grabbag.conf echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/grabbag.conf
ldconfig
# 如果不是首次安装,公共库已经配置过,只需要更新
if [ "${FIRST_INSTALL}" = true ]; then
echo "配置公共库路径..."
ldconfig
else
echo "公共库已存在,仅更新配置..."
ldconfig
fi
# 确保应用程序可执行 # 确保应用程序可执行
chmod +x /usr/local/bin/GrabBagApp chmod +x /usr/local/bin/GrabBagApp
# 配置端口映射 502 -> 5020 # 配置端口映射 502 -> 5020
echo "配置端口映射 502 -> 5020..." echo "配置端口映射 502 -> 5020..."
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
# 检查并创建systemd服务确保重启后规则生效 # 检查并创建systemd服务确保重启后规则生效
if [ ! -f /etc/systemd/system/vr-port-mapping.service ]; then 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 systemctl start vr-port-mapping.service 2>/dev/null || true
fi 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 "检查当前用户的桌面快捷方式..." echo "检查当前用户的桌面快捷方式..."
@ -222,12 +252,21 @@ else
echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建" echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建"
fi 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 "GrabBag 应用程序安装完成!"
echo "应用程序将在用户登录桌面后自动启动。" echo "应用程序将在用户登录桌面后自动启动。"
echo "端口映射已配置502 -> 5020" echo "端口映射已配置502 -> 5020"
echo "桌面快捷方式已创建如果用户有Desktop目录" echo "桌面快捷方式已创建如果用户有Desktop目录"
echo "如需立即启动,请运行: /usr/local/bin/GrabBagApp" echo "如需立即启动,请运行: /usr/local/bin/GrabBagApp"
echo "如需禁用自启动,请删除文件: ~/.config/autostart/grabbag.desktop" echo "如需禁用自启动,请删除文件: ~/.config/autostart/grabbag.desktop"
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
EOF EOF
chmod +x ${POSTINST_PATH} chmod +x ${POSTINST_PATH}
@ -240,19 +279,55 @@ cat > ${POSTRM_PATH} << 'EOF'
echo "卸载 GrabBag 应用程序..." 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 rm -f /etc/ld.so.conf.d/grabbag.conf
# 检查是否还有其他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 "清理端口映射配置..."
systemctl stop vr-port-mapping.service 2>/dev/null || true
systemctl disable vr-port-mapping.service 2>/dev/null || true
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 ldconfig
# 清理端口映射配置
echo "清理端口映射配置..."
systemctl stop vr-port-mapping.service 2>/dev/null || true
systemctl disable vr-port-mapping.service 2>/dev/null || true
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
# 重新加载systemd # 重新加载systemd
systemctl daemon-reload systemctl daemon-reload
@ -289,7 +364,11 @@ if [ "$shortcut_found" = false ]; then
fi fi
echo "GrabBag 应用程序卸载完成!" echo "GrabBag 应用程序卸载完成!"
echo "端口映射配置已清理" if [ "${REMAINING_APPS}" -eq 0 ]; then
echo "所有VR应用已卸载公共资源已清理"
else
echo "公共资源已保留供其他VR应用使用"
fi
echo "桌面快捷方式已清理" echo "桌面快捷方式已清理"
echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/grabbag.desktop" echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/grabbag.desktop"
EOF EOF

View File

@ -135,17 +135,39 @@ cat > ${POSTINST_PATH} << 'EOF'
echo "配置 LapWeld 应用程序..." 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 "/usr/lib" > /etc/ld.so.conf.d/lapweld.conf
echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/lapweld.conf echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/lapweld.conf
ldconfig
# 如果不是首次安装,公共库已经配置过,只需要更新
if [ "${FIRST_INSTALL}" = true ]; then
echo "配置公共库路径..."
ldconfig
else
echo "公共库已存在,仅更新配置..."
ldconfig
fi
# 确保应用程序可执行 # 确保应用程序可执行
chmod +x /usr/local/bin/LapWeldApp chmod +x /usr/local/bin/LapWeldApp
# 配置端口映射 502 -> 5020 # 配置端口映射 502 -> 5020
echo "配置端口映射 502 -> 5020..." echo "配置端口映射 502 -> 5020..."
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
# 检查并创建systemd服务确保重启后规则生效 # 检查并创建systemd服务确保重启后规则生效
if [ ! -f /etc/systemd/system/vr-port-mapping.service ]; then 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 systemctl start vr-port-mapping.service 2>/dev/null || true
fi 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 "检查当前用户的桌面快捷方式..." echo "检查当前用户的桌面快捷方式..."
@ -223,12 +253,21 @@ else
echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建" echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建"
fi 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 "LapWeld 应用程序安装完成!"
echo "应用程序将在用户登录桌面后自动启动。" echo "应用程序将在用户登录桌面后自动启动。"
echo "端口映射已配置502 -> 5020" echo "端口映射已配置502 -> 5020"
echo "桌面快捷方式已创建如果用户有Desktop目录" echo "桌面快捷方式已创建如果用户有Desktop目录"
echo "如需立即启动,请运行: /usr/local/bin/LapWeldApp" echo "如需立即启动,请运行: /usr/local/bin/LapWeldApp"
echo "如需禁用自启动,请删除文件: ~/.config/autostart/lapweld.desktop" echo "如需禁用自启动,请删除文件: ~/.config/autostart/lapweld.desktop"
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
EOF EOF
chmod +x ${POSTINST_PATH} chmod +x ${POSTINST_PATH}
@ -241,19 +280,55 @@ cat > ${POSTRM_PATH} << 'EOF'
echo "卸载 LapWeld 应用程序..." 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 rm -f /etc/ld.so.conf.d/lapweld.conf
# 检查是否还有其他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 "清理端口映射配置..."
systemctl stop vr-port-mapping.service 2>/dev/null || true
systemctl disable vr-port-mapping.service 2>/dev/null || true
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 ldconfig
# 清理端口映射配置
echo "清理端口映射配置..."
systemctl stop vr-port-mapping.service 2>/dev/null || true
systemctl disable vr-port-mapping.service 2>/dev/null || true
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
# 重新加载systemd # 重新加载systemd
systemctl daemon-reload systemctl daemon-reload
@ -290,7 +365,11 @@ if [ "$shortcut_found" = false ]; then
fi fi
echo "LapWeld 应用程序卸载完成!" echo "LapWeld 应用程序卸载完成!"
echo "端口映射配置已清理" if [ "${REMAINING_APPS}" -eq 0 ]; then
echo "所有VR应用已卸载公共资源已清理"
else
echo "公共资源已保留供其他VR应用使用"
fi
echo "桌面快捷方式已清理" echo "桌面快捷方式已清理"
echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/lapweld.desktop" echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/lapweld.desktop"
EOF EOF

View File

@ -134,17 +134,39 @@ cat > ${POSTINST_PATH} << 'EOF'
echo "配置 ParticleSize 应用程序..." 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 "/usr/lib" > /etc/ld.so.conf.d/particlesize.conf
echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/particlesize.conf echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/particlesize.conf
ldconfig
# 如果不是首次安装,公共库已经配置过,只需要更新
if [ "${FIRST_INSTALL}" = true ]; then
echo "配置公共库路径..."
ldconfig
else
echo "公共库已存在,仅更新配置..."
ldconfig
fi
# 确保应用程序可执行 # 确保应用程序可执行
chmod +x /usr/local/bin/ParticleSizeApp chmod +x /usr/local/bin/ParticleSizeApp
# 配置端口映射 502 -> 5020 # 配置端口映射 502 -> 5020
echo "配置端口映射 502 -> 5020..." echo "配置端口映射 502 -> 5020..."
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
# 检查并创建systemd服务确保重启后规则生效 # 检查并创建systemd服务确保重启后规则生效
if [ ! -f /etc/systemd/system/vr-port-mapping.service ]; then 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 systemctl start vr-port-mapping.service 2>/dev/null || true
fi 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 "检查当前用户的桌面快捷方式..." echo "检查当前用户的桌面快捷方式..."
@ -222,12 +252,21 @@ else
echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建" echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建"
fi 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 "ParticleSize 应用程序安装完成!"
echo "应用程序将在用户登录桌面后自动启动。" echo "应用程序将在用户登录桌面后自动启动。"
echo "端口映射已配置502 -> 5020" echo "端口映射已配置502 -> 5020"
echo "桌面快捷方式已创建如果用户有Desktop目录" echo "桌面快捷方式已创建如果用户有Desktop目录"
echo "如需立即启动,请运行: /usr/local/bin/ParticleSizeApp" echo "如需立即启动,请运行: /usr/local/bin/ParticleSizeApp"
echo "如需禁用自启动,请删除文件: ~/.config/autostart/particlesize.desktop" echo "如需禁用自启动,请删除文件: ~/.config/autostart/particlesize.desktop"
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
EOF EOF
chmod +x ${POSTINST_PATH} chmod +x ${POSTINST_PATH}
@ -240,19 +279,55 @@ cat > ${POSTRM_PATH} << 'EOF'
echo "卸载 ParticleSize 应用程序..." 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 rm -f /etc/ld.so.conf.d/particlesize.conf
# 检查是否还有其他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 "清理端口映射配置..."
systemctl stop vr-port-mapping.service 2>/dev/null || true
systemctl disable vr-port-mapping.service 2>/dev/null || true
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 ldconfig
# 清理端口映射配置
echo "清理端口映射配置..."
systemctl stop vr-port-mapping.service 2>/dev/null || true
systemctl disable vr-port-mapping.service 2>/dev/null || true
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
# 重新加载systemd # 重新加载systemd
systemctl daemon-reload systemctl daemon-reload
@ -289,7 +364,11 @@ if [ "$shortcut_found" = false ]; then
fi fi
echo "ParticleSize 应用程序卸载完成!" echo "ParticleSize 应用程序卸载完成!"
echo "端口映射配置已清理" if [ "${REMAINING_APPS}" -eq 0 ]; then
echo "所有VR应用已卸载公共资源已清理"
else
echo "公共资源已保留供其他VR应用使用"
fi
echo "桌面快捷方式已清理" echo "桌面快捷方式已清理"
echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/particlesize.desktop" echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/particlesize.desktop"
EOF EOF

View File

@ -134,17 +134,39 @@ cat > ${POSTINST_PATH} << 'EOF'
echo "配置 Workpiece 应用程序..." 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 "/usr/lib" > /etc/ld.so.conf.d/workpiece.conf
echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/workpiece.conf echo "/opt/sysroot/lib/" >> /etc/ld.so.conf.d/workpiece.conf
ldconfig
# 如果不是首次安装,公共库已经配置过,只需要更新
if [ "${FIRST_INSTALL}" = true ]; then
echo "配置公共库路径..."
ldconfig
else
echo "公共库已存在,仅更新配置..."
ldconfig
fi
# 确保应用程序可执行 # 确保应用程序可执行
chmod +x /usr/local/bin/WorkpieceApp chmod +x /usr/local/bin/WorkpieceApp
# 配置端口映射 502 -> 5020 # 配置端口映射 502 -> 5020
echo "配置端口映射 502 -> 5020..." echo "配置端口映射 502 -> 5020..."
iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020
# 检查并创建systemd服务确保重启后规则生效 # 检查并创建systemd服务确保重启后规则生效
if [ ! -f /etc/systemd/system/vr-port-mapping.service ]; then 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 systemctl start vr-port-mapping.service 2>/dev/null || true
fi 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 "检查当前用户的桌面快捷方式..." echo "检查当前用户的桌面快捷方式..."
@ -222,12 +252,21 @@ else
echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建" echo "当前用户没有找到桌面目录(Desktop/桌面/desktop),跳过桌面快捷方式创建"
fi 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 "Workpiece 应用程序安装完成!"
echo "应用程序将在用户登录桌面后自动启动。" echo "应用程序将在用户登录桌面后自动启动。"
echo "端口映射已配置502 -> 5020" echo "端口映射已配置502 -> 5020"
echo "桌面快捷方式已创建如果用户有Desktop目录" echo "桌面快捷方式已创建如果用户有Desktop目录"
echo "如需立即启动,请运行: /usr/local/bin/WorkpieceApp" echo "如需立即启动,请运行: /usr/local/bin/WorkpieceApp"
echo "如需禁用自启动,请删除文件: ~/.config/autostart/workpiece.desktop" echo "如需禁用自启动,请删除文件: ~/.config/autostart/workpiece.desktop"
echo "已安装的VR应用: $(cat ${REGISTRY_FILE} | tr '\n' ' ')"
EOF EOF
chmod +x ${POSTINST_PATH} chmod +x ${POSTINST_PATH}
@ -240,19 +279,55 @@ cat > ${POSTRM_PATH} << 'EOF'
echo "卸载 Workpiece 应用程序..." 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 rm -f /etc/ld.so.conf.d/workpiece.conf
# 检查是否还有其他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 "清理端口映射配置..."
systemctl stop vr-port-mapping.service 2>/dev/null || true
systemctl disable vr-port-mapping.service 2>/dev/null || true
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 ldconfig
# 清理端口映射配置
echo "清理端口映射配置..."
systemctl stop vr-port-mapping.service 2>/dev/null || true
systemctl disable vr-port-mapping.service 2>/dev/null || true
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
# 重新加载systemd # 重新加载systemd
systemctl daemon-reload systemctl daemon-reload
@ -289,7 +364,11 @@ if [ "$shortcut_found" = false ]; then
fi fi
echo "Workpiece 应用程序卸载完成!" echo "Workpiece 应用程序卸载完成!"
echo "端口映射配置已清理" if [ "${REMAINING_APPS}" -eq 0 ]; then
echo "所有VR应用已卸载公共资源已清理"
else
echo "公共资源已保留供其他VR应用使用"
fi
echo "桌面快捷方式已清理" echo "桌面快捷方式已清理"
echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/workpiece.desktop" echo "如需彻底清理自启动配置,请手动删除: ~/.config/autostart/workpiece.desktop"
EOF EOF