13

阿木币

1

精华

23 小时

在线时间

技术大V

Rank: 4

发表于 2019-5-7 23:10:56 3896 浏览 0 回复

编译完成的QGC,如何打包 windows 和 ubuntu打包

本帖最后由 AmovlabPony 于 2019-5-11 10:32 编辑

  针对要进行打包的软件,建议大家使用realse编译,打开Qt在左下角进行选择,示意图如下:

选择Realse编译

选择Realse编译

选择完成之后,点击运行进行编译。编译完成后,可以通过点击“项目”,在弹出的对话框中,选择浏览查看编译完成的软件的存放路径,实际操作示意图如下:

查找编译文件路径

查找编译文件路径


在弹出的对话框中,复制路径,打开对应路径,选择release文件,该路径下存在一个QGroundControl.exe可执行文件,双击软件,软件可以正常运行之后,可以开始下一步进行软件的打包.

一、QGC在Windows下打包方法
     软件的打包可以通过VS进行,这部分的内容大家可以百度相关文档执行。本文结合QGC提供一种脚本方式进行软件的打包,在实际使用中很方便快捷。

方式一:工程配置软件打包         下载NSIS软件地址,选择默认安装,最终会安装在C:\Program Files (x86)\NSIS路径下哦。之后配置项目:

打包配置

打包配置


     编译运行,即可得到打包的软件。


方式二:提供一个改装版脚本编译运行
(一)打包软件安装
   脚本的打包方式需要安装两个软件,链接地址参考如下,大家自行下载安装:

   安装完成之后桌面,新增如下两个快捷方式:

NSIS桌面图标

NSIS桌面图标

HM-NIS-Edit桌面图标

HM-NIS-Edit桌面图标


(二)执行脚本

      打开“HM NIS Edit”软件,打开QGC下载路径下deploy/qgroundcontrol_installer.nsi,用下面的内容进行覆盖:
  1. !include "MUI2.nsh"
  2. !include LogicLib.nsh
  3. !include Win\COM.nsh
  4. !include Win\Propkey.nsh
  5. !include "FileFunc.nsh"

  6. !define APPNAME QGroundControl.exe
  7. !define EXENAME QGroundControl
  8. !define HEADER_BITMAP ..\installheader.bmp
  9. !define INSTALLER_ICON ..\WindowsQGC.ico

  10. !macro DemoteShortCut target
  11.     !insertmacro ComHlpr_CreateInProcInstance ${CLSID_ShellLink} ${IID_IShellLink} r0 ""
  12.     ${If} $0 <> 0
  13.             ${IUnknown::QueryInterface} $0 '("${IID_IPersistFile}",.r1)'
  14.             ${If} $1 P<> 0
  15.                     ${IPersistFile::Load} $1 '("${target}",1)'
  16.                     ${IUnknown::Release} $1 ""
  17.             ${EndIf}
  18.             ${IUnknown::QueryInterface} $0 '("${IID_IPropertyStore}",.r1)'
  19.             ${If} $1 P<> 0
  20.                     System::Call '*${SYSSTRUCT_PROPERTYKEY}(${PKEY_AppUserModel_StartPinOption})p.r2'
  21.                     System::Call '*${SYSSTRUCT_PROPVARIANT}(${VT_UI4},,&i4 ${APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL})p.r3'
  22.                     ${IPropertyStore::SetValue} $1 '($2,$3)'

  23.                     ; Reuse the PROPERTYKEY & PROPVARIANT buffers to set another property
  24.                     System::Call '*$2${SYSSTRUCT_PROPERTYKEY}(${PKEY_AppUserModel_ExcludeFromShowInNewInstall})'
  25.                     System::Call '*$3${SYSSTRUCT_PROPVARIANT}(${VT_BOOL},,&i2 ${VARIANT_TRUE})'
  26.                     ${IPropertyStore::SetValue} $1 '($2,$3)'

  27.                     System::Free $2
  28.                     System::Free $3
  29.                     ${IPropertyStore::Commit} $1 ""
  30.                     ${IUnknown::Release} $1 ""
  31.             ${EndIf}
  32.             ${IUnknown::QueryInterface} $0 '("${IID_IPersistFile}",.r1)'
  33.             ${If} $1 P<> 0
  34.                     ${IPersistFile::Save} $1 '("${target}",1)'
  35.                     ${IUnknown::Release} $1 ""
  36.             ${EndIf}
  37.             ${IUnknown::Release} $0 ""
  38.     ${EndIf}
  39. !macroend

  40. Name "${APPNAME}"
  41. Var StartMenuFolder

  42. InstallDir "$PROGRAMFILES\${APPNAME}"

  43. SetCompressor /SOLID /FINAL lzma

  44. !define MUI_HEADERIMAGE
  45. !define MUI_HEADERIMAGE_BITMAP "${HEADER_BITMAP}";
  46. !define MUI_ICON "${INSTALLER_ICON}";
  47. !define MUI_UNICON "${INSTALLER_ICON}";

  48. !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
  49. !insertmacro MUI_PAGE_DIRECTORY
  50. !insertmacro MUI_PAGE_INSTFILES

  51. !insertmacro MUI_UNPAGE_CONFIRM
  52. !insertmacro MUI_UNPAGE_INSTFILES

  53. !insertmacro MUI_LANGUAGE "English"

  54. Section
  55.   ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString"
  56.   StrCmp $R0 "" doinstall

  57.   ExecWait "$R0 /S _?=$INSTDIR -LEAVE_DATA=1"
  58.   IntCmp $0 0 doinstall

  59.   MessageBox MB_OK|MB_ICONEXCLAMATION \
  60.         "Could not remove a previously installed ${APPNAME} version.$\n$\nPlease remove it before continuing."
  61.   Abort

  62. doinstall:
  63.   SetOutPath $INSTDIR
  64.   File /r /x ${EXENAME}.pdb /x ${EXENAME}.lib /x ${EXENAME}.exp .\release\*.*
  65.   File px4driver.msi
  66.   WriteUninstaller $INSTDIR\${EXENAME}-Uninstall.exe
  67.   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
  68.   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$"$INSTDIR\${EXENAME}-Uninstall.exe$""
  69.   SetRegView 64
  70.   WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" "DumpCount" 5
  71.   WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" "DumpType" 2
  72.   WriteRegExpandStr HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" "DumpFolder" "%LOCALAPPDATA%\QGCCrashDumps"

  73.   ; Only attempt to install the PX4 driver if the version isn't present
  74.   !define ROOTKEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\434608CF2B6E31F0DDBA5C511053F957B55F098E"

  75.   SetRegView 64
  76.   ReadRegStr $0 HKLM "${ROOTKEY}" "Publisher"
  77.   StrCmp     $0 "3D Robotics" found_provider notfound

  78. found_provider:
  79.   ReadRegStr $0 HKLM "${ROOTKEY}" "DisplayVersion"
  80.   DetailPrint "Checking USB driver version... $0"
  81.   StrCmp     $0 "04/11/2013 2.0.0.4" skip_driver notfound

  82. notfound:
  83.   DetailPrint "USB Driver not found... installing"
  84.   ExecWait '"msiexec" /i "px4driver.msi"'
  85.   goto done

  86. skip_driver:
  87.   DetailPrint "USB Driver found... skipping install"
  88. done:
  89.   SetRegView lastused
  90. SectionEnd

  91. Section "Uninstall"
  92.   ${GetParameters} $R0
  93.   ${GetOptions} $R0 "-LEAVE_DATA=" $R1
  94.   !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
  95.   SetShellVarContext all
  96.   RMDir /r /REBOOTOK $INSTDIR
  97.   RMDir /r /REBOOTOK "$SMPROGRAMS\$StartMenuFolder"
  98.   SetShellVarContext current
  99.   ${If} $R1 != 1
  100.     RMDir /r /REBOOTOK "$APPDATA\${ORGNAME}"
  101.   ${Endif}
  102.   DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
  103.   DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe"
  104. SectionEnd

  105. Section "create Start Menu Shortcuts"
  106.   SetShellVarContext all
  107.   CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
  108.   CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME}.lnk" "$INSTDIR\${EXENAME}.exe" "" "$INSTDIR\${EXENAME}.exe" 0
  109.   CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME} (GPU Compatibility Mode).lnk" "$INSTDIR\${EXENAME}.exe" "-angle" "$INSTDIR\${EXENAME}.exe" 0
  110.   !insertmacro DemoteShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME} (GPU Compatibility Mode).lnk"
  111.   CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME} (GPU Safe Mode).lnk" "$INSTDIR\${EXENAME}.exe" "-swrast" "$INSTDIR\${EXENAME}.exe" 0
  112.   !insertmacro DemoteShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME} (GPU Safe Mode).lnk"
  113. SectionEnd

复制代码
之后,将编译生成的realse文件夹复制到deploy文件夹下,之后编译运行.

NSIS编译运行

NSIS编译运行

二、QGC在Linux下打包方法编译时,添加CONFIG+=installer配置。

之后,之后正常运行,在编译目录下即可看到

Linux安装包结果

Linux安装包结果

点击"QGroundControl"或者命令行执行“./qgroundcontrol-start.sh”。






选择realse编译.png
打开编译结果存放路径.png
NSIS桌面图标.png
HM-NIS-Edit桌面图标.png
打开编译结果存放路径.png

扫一扫浏览分享
回复

使用道具 举报

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

本版积分规则

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