v1.2: .VSC 文件格式 & 跨平台安装程序
【文件格式】 - 工程文件扩展名从 .json 改为 .VSC(内容仍为 JSON) - 文件对话框过滤、保存/打开全部适配 .VSC - 双击 .VSC 文件可直接打开工程(命令行传参) 【安装程序】 - Windows: NSIS 安装脚本 (installer/voiletcstudio.nsi) 支持注册 .VSC 文件关联、开始菜单/桌面快捷方式、卸载 - Linux: install.sh/uninstall.sh 一键安装/卸载 自动注册 MIME 类型、.desktop 文件、命令行软链接 - 内置 --register/--unregister 命令行参数用于文件关联 【代码清理】 - 移除所有拖拽功能(dragEnter/Move/DropEvent) - 新增 MainWindow::openProjectFile() 用于命令行打开 - main.cpp 完整重写,加入命令行解析器 【其他】 - .gitignore 排除 NSIS 输出 (.exe)
This commit is contained in:
92
installer/install.sh
Normal file
92
installer/install.sh
Normal file
@@ -0,0 +1,92 @@
|
||||
#!/bin/bash
|
||||
# =====================================================
|
||||
# VoiletCStudio Linux 安装脚本
|
||||
# 用法: sudo bash installer/install.sh
|
||||
# =====================================================
|
||||
|
||||
set -e
|
||||
|
||||
APP_NAME="VoiletCStudio"
|
||||
VERSION="1.2"
|
||||
INSTALL_DIR="/opt/${APP_NAME}"
|
||||
BIN_DIR="/usr/local/bin"
|
||||
DESKTOP_DIR="/usr/share/applications"
|
||||
MIME_DIR="/usr/share/mime/packages"
|
||||
ICON_DIR="/usr/share/icons/hicolor/256x256/apps"
|
||||
|
||||
echo "========================================="
|
||||
echo " VoiletCStudio v${VERSION} - Linux 安装程序"
|
||||
echo "========================================="
|
||||
|
||||
# 检查 root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "请使用 sudo 运行: sudo bash installer/install.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "[1/5] 编译程序..."
|
||||
mkdir -p build && cd build
|
||||
qmake ../VoiletCStudio.pro && make -j$(nproc)
|
||||
cd ..
|
||||
|
||||
echo ""
|
||||
echo "[2/5] 安装到 ${INSTALL_DIR}..."
|
||||
mkdir -p "${INSTALL_DIR}"
|
||||
cp build/VoiletCStudio "${INSTALL_DIR}/"
|
||||
chmod +x "${INSTALL_DIR}/VoiletCStudio"
|
||||
|
||||
# 创建命令行软链接
|
||||
ln -sf "${INSTALL_DIR}/VoiletCStudio" "${BIN_DIR}/voiletcstudio"
|
||||
|
||||
echo ""
|
||||
echo "[3/5] 安装图标..."
|
||||
mkdir -p "${ICON_DIR}"
|
||||
cp resources/voiletcstudio.png "${ICON_DIR}/voiletcstudio.png"
|
||||
|
||||
echo ""
|
||||
echo "[4/5] 注册 MIME 类型和 .desktop..."
|
||||
mkdir -p "${MIME_DIR}"
|
||||
cat > "${MIME_DIR}/voiletcstudio.xml" << 'MIMEXML'
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||
<mime-type type="application/x-voiletcstudio">
|
||||
<comment>VoiletCStudio Project</comment>
|
||||
<comment xml:lang="zh_CN">VoiletCStudio 工程文件</comment>
|
||||
<glob pattern="*.VSC"/>
|
||||
<glob pattern="*.vsc"/>
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
MIMEXML
|
||||
|
||||
mkdir -p "${DESKTOP_DIR}"
|
||||
cat > "${DESKTOP_DIR}/voiletcstudio.desktop" << DESKTOPEOF
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=VoiletCStudio
|
||||
Name[zh_CN]=紫罗兰 C 工程配置器
|
||||
Comment=C Project Configurator with CMake
|
||||
Comment[zh_CN]=C 语言工程配置器,自动生成 CMakeLists.txt
|
||||
Exec=${INSTALL_DIR}/VoiletCStudio %f
|
||||
Icon=voiletcstudio
|
||||
MimeType=application/x-voiletcstudio;
|
||||
Categories=Development;IDE;
|
||||
Terminal=false
|
||||
DESKTOPEOF
|
||||
|
||||
echo ""
|
||||
echo "[5/5] 更新系统数据库..."
|
||||
update-mime-database /usr/share/mime
|
||||
update-desktop-database
|
||||
gtk-update-icon-cache /usr/share/icons/hicolor 2>/dev/null || true
|
||||
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo " ✅ VoiletCStudio 安装完成!"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
echo " 命令行: voiletcstudio"
|
||||
echo " 或双击 .VSC 工程文件自动打开"
|
||||
echo ""
|
||||
echo " 卸载: sudo bash installer/uninstall.sh"
|
||||
echo ""
|
||||
25
installer/uninstall.sh
Normal file
25
installer/uninstall.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
# =====================================================
|
||||
# VoiletCStudio Linux 卸载脚本
|
||||
# =====================================================
|
||||
set -e
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "请使用 sudo 运行"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
APP_NAME="VoiletCStudio"
|
||||
|
||||
echo "正在卸载 ${APP_NAME}..."
|
||||
|
||||
rm -rf "/opt/${APP_NAME}"
|
||||
rm -f "/usr/local/bin/voiletcstudio"
|
||||
rm -f "/usr/share/applications/voiletcstudio.desktop"
|
||||
rm -f "/usr/share/mime/packages/voiletcstudio.xml"
|
||||
rm -f "/usr/share/icons/hicolor/256x256/apps/voiletcstudio.png"
|
||||
|
||||
update-mime-database /usr/share/mime 2>/dev/null || true
|
||||
update-desktop-database 2>/dev/null || true
|
||||
|
||||
echo "✅ ${APP_NAME} 已卸载"
|
||||
85
installer/voiletcstudio.nsi
Normal file
85
installer/voiletcstudio.nsi
Normal file
@@ -0,0 +1,85 @@
|
||||
; =====================================================
|
||||
; VoiletCStudio Windows 安装脚本 (NSIS)
|
||||
; 用法: makensis installer/voiletcstudio.nsi
|
||||
; =====================================================
|
||||
|
||||
!define PRODUCT_NAME "VoiletCStudio"
|
||||
!define PRODUCT_VERSION "1.2"
|
||||
!define PRODUCT_PUBLISHER "LinuxAcme"
|
||||
!define PRODUCT_EXE "VoiletCStudio.exe"
|
||||
|
||||
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
||||
OutFile "VoiletCStudio-Setup-${PRODUCT_VERSION}.exe"
|
||||
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
|
||||
RequestExecutionLevel admin
|
||||
|
||||
; ----- 安装页面 -----
|
||||
Page directory
|
||||
Page instfiles
|
||||
|
||||
; ----- 默认安装路径 -----
|
||||
Section "Install"
|
||||
SetOutPath "$INSTDIR"
|
||||
|
||||
; 复制主程序
|
||||
File "VoiletCStudio.exe"
|
||||
|
||||
; 复制 Qt 运行时 DLL(需要提前准备好)
|
||||
; File /r "Qt5Core.dll"
|
||||
; File /r "Qt5Gui.dll"
|
||||
; File /r "Qt5Widgets.dll"
|
||||
|
||||
; 复制 MinGW 运行时
|
||||
; File /r "libgcc_s_seh-1.dll"
|
||||
; File /r "libstdc++-6.dll"
|
||||
; File /r "libwinpthread-1.dll"
|
||||
|
||||
; 创建卸载程序
|
||||
WriteUninstaller "$INSTDIR\uninstall.exe"
|
||||
|
||||
; 注册 .VSC 文件关联
|
||||
WriteRegStr HKCR ".VSC" "" "VoiletCStudio.VSC"
|
||||
WriteRegStr HKCR "VoiletCStudio.VSC" "" "VoiletCStudio 工程文件"
|
||||
WriteRegStr HKCR "VoiletCStudio.VSC\DefaultIcon" "" "$INSTDIR\${PRODUCT_EXE},0"
|
||||
WriteRegStr HKCR "VoiletCStudio.VSC\shell\open\command" "" '"$INSTDIR\${PRODUCT_EXE}" "%1"'
|
||||
|
||||
; 注册表卸载信息
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_NAME}"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" "$INSTDIR\uninstall.exe"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayVersion" "${PRODUCT_VERSION}"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "Publisher" "${PRODUCT_PUBLISHER}"
|
||||
|
||||
; 开始菜单快捷方式
|
||||
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\VoiletCStudio.lnk" "$INSTDIR\${PRODUCT_EXE}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\卸载.lnk" "$INSTDIR\uninstall.exe"
|
||||
|
||||
; 桌面快捷方式
|
||||
CreateShortCut "$DESKTOP\VoiletCStudio.lnk" "$INSTDIR\${PRODUCT_EXE}"
|
||||
|
||||
; 通知系统刷新文件关联
|
||||
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
|
||||
SectionEnd
|
||||
|
||||
; ----- 卸载 -----
|
||||
Section "Uninstall"
|
||||
; 删除程序
|
||||
Delete "$INSTDIR\${PRODUCT_EXE}"
|
||||
Delete "$INSTDIR\uninstall.exe"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
; 删除文件关联
|
||||
DeleteRegKey HKCR ".VSC"
|
||||
DeleteRegKey HKCR "VoiletCStudio.VSC"
|
||||
|
||||
; 删除注册表
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||||
|
||||
; 删除快捷方式
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\VoiletCStudio.lnk"
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\卸载.lnk"
|
||||
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
Delete "$DESKTOP\VoiletCStudio.lnk"
|
||||
|
||||
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
|
||||
SectionEnd
|
||||
Reference in New Issue
Block a user