
|
发表于 2019-5-7 23:10:56
6705 浏览 0 回复
编译完成的QGC,如何打包 windows 和 ubuntu打包
本帖最后由 AmovlabPony 于 2019-5-11 10:32 编辑
针对要进行打包的软件,建议大家使用realse编译,打开Qt在左下角进行选择,示意图如下:
选择Realse编译
选择完成之后,点击运行进行编译。编译完成后,可以通过点击“项目”,在弹出的对话框中,选择浏览查看编译完成的软件的存放路径,实际操作示意图如下:
查找编译文件路径
在弹出的对话框中,复制路径,打开对应路径,选择release文件,该路径下存在一个QGroundControl.exe可执行文件,双击软件,软件可以正常运行之后,可以开始下一步进行软件的打包.
一、QGC在Windows下打包方法
软件的打包可以通过VS进行,这部分的内容大家可以百度相关文档执行。本文结合QGC提供一种脚本方式进行软件的打包,在实际使用中很方便快捷。
方式一:工程配置软件打包 下载NSIS软件地址,选择默认安装,最终会安装在C:\Program Files (x86)\NSIS路径下哦。之后配置项目:
打包配置
编译运行,即可得到打包的软件。
方式二:提供一个改装版脚本编译运行
(一)打包软件安装
脚本的打包方式需要安装两个软件,链接地址参考如下,大家自行下载安装:
安装完成之后桌面,新增如下两个快捷方式:
NSIS桌面图标
HM-NIS-Edit桌面图标
(二)执行脚本
打开“HM NIS Edit”软件,打开QGC下载路径下deploy/qgroundcontrol_installer.nsi,用下面的内容进行覆盖: - !include "MUI2.nsh"
- !include LogicLib.nsh
- !include Win\COM.nsh
- !include Win\Propkey.nsh
- !include "FileFunc.nsh"
- !define APPNAME QGroundControl.exe
- !define EXENAME QGroundControl
- !define HEADER_BITMAP ..\installheader.bmp
- !define INSTALLER_ICON ..\WindowsQGC.ico
- !macro DemoteShortCut target
- !insertmacro ComHlpr_CreateInProcInstance ${CLSID_ShellLink} ${IID_IShellLink} r0 ""
- ${If} $0 <> 0
- ${IUnknown::QueryInterface} $0 '("${IID_IPersistFile}",.r1)'
- ${If} $1 P<> 0
- ${IPersistFile::Load} $1 '("${target}",1)'
- ${IUnknown::Release} $1 ""
- ${EndIf}
- ${IUnknown::QueryInterface} $0 '("${IID_IPropertyStore}",.r1)'
- ${If} $1 P<> 0
- System::Call '*${SYSSTRUCT_PROPERTYKEY}(${PKEY_AppUserModel_StartPinOption})p.r2'
- System::Call '*${SYSSTRUCT_PROPVARIANT}(${VT_UI4},,&i4 ${APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL})p.r3'
- ${IPropertyStore::SetValue} $1 '($2,$3)'
- ; Reuse the PROPERTYKEY & PROPVARIANT buffers to set another property
- System::Call '*$2${SYSSTRUCT_PROPERTYKEY}(${PKEY_AppUserModel_ExcludeFromShowInNewInstall})'
- System::Call '*$3${SYSSTRUCT_PROPVARIANT}(${VT_BOOL},,&i2 ${VARIANT_TRUE})'
- ${IPropertyStore::SetValue} $1 '($2,$3)'
- System::Free $2
- System::Free $3
- ${IPropertyStore::Commit} $1 ""
- ${IUnknown::Release} $1 ""
- ${EndIf}
- ${IUnknown::QueryInterface} $0 '("${IID_IPersistFile}",.r1)'
- ${If} $1 P<> 0
- ${IPersistFile::Save} $1 '("${target}",1)'
- ${IUnknown::Release} $1 ""
- ${EndIf}
- ${IUnknown::Release} $0 ""
- ${EndIf}
- !macroend
- Name "${APPNAME}"
- Var StartMenuFolder
- InstallDir "$PROGRAMFILES\${APPNAME}"
- SetCompressor /SOLID /FINAL lzma
- !define MUI_HEADERIMAGE
- !define MUI_HEADERIMAGE_BITMAP "${HEADER_BITMAP}";
- !define MUI_ICON "${INSTALLER_ICON}";
- !define MUI_UNICON "${INSTALLER_ICON}";
- !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
- !insertmacro MUI_PAGE_DIRECTORY
- !insertmacro MUI_PAGE_INSTFILES
- !insertmacro MUI_UNPAGE_CONFIRM
- !insertmacro MUI_UNPAGE_INSTFILES
- !insertmacro MUI_LANGUAGE "English"
- Section
- ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString"
- StrCmp $R0 "" doinstall
- ExecWait "$R0 /S _?=$INSTDIR -LEAVE_DATA=1"
- IntCmp $0 0 doinstall
- MessageBox MB_OK|MB_ICONEXCLAMATION \
- "Could not remove a previously installed ${APPNAME} version.$\n$\nPlease remove it before continuing."
- Abort
- doinstall:
- SetOutPath $INSTDIR
- File /r /x ${EXENAME}.pdb /x ${EXENAME}.lib /x ${EXENAME}.exp .\release\*.*
- File px4driver.msi
- WriteUninstaller $INSTDIR\${EXENAME}-Uninstall.exe
- WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
- WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$"$INSTDIR\${EXENAME}-Uninstall.exe$""
- SetRegView 64
- WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" "DumpCount" 5
- WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" "DumpType" 2
- WriteRegExpandStr HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe" "DumpFolder" "%LOCALAPPDATA%\QGCCrashDumps"
- ; Only attempt to install the PX4 driver if the version isn't present
- !define ROOTKEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\434608CF2B6E31F0DDBA5C511053F957B55F098E"
- SetRegView 64
- ReadRegStr $0 HKLM "${ROOTKEY}" "Publisher"
- StrCmp $0 "3D Robotics" found_provider notfound
- found_provider:
- ReadRegStr $0 HKLM "${ROOTKEY}" "DisplayVersion"
- DetailPrint "Checking USB driver version... $0"
- StrCmp $0 "04/11/2013 2.0.0.4" skip_driver notfound
- notfound:
- DetailPrint "USB Driver not found... installing"
- ExecWait '"msiexec" /i "px4driver.msi"'
- goto done
- skip_driver:
- DetailPrint "USB Driver found... skipping install"
- done:
- SetRegView lastused
- SectionEnd
- Section "Uninstall"
- ${GetParameters} $R0
- ${GetOptions} $R0 "-LEAVE_DATA=" $R1
- !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
- SetShellVarContext all
- RMDir /r /REBOOTOK $INSTDIR
- RMDir /r /REBOOTOK "$SMPROGRAMS\$StartMenuFolder"
- SetShellVarContext current
- ${If} $R1 != 1
- RMDir /r /REBOOTOK "$APPDATA\${ORGNAME}"
- ${Endif}
- DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
- DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\${EXENAME}.exe"
- SectionEnd
- Section "create Start Menu Shortcuts"
- SetShellVarContext all
- CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
- CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME}.lnk" "$INSTDIR\${EXENAME}.exe" "" "$INSTDIR\${EXENAME}.exe" 0
- CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME} (GPU Compatibility Mode).lnk" "$INSTDIR\${EXENAME}.exe" "-angle" "$INSTDIR\${EXENAME}.exe" 0
- !insertmacro DemoteShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME} (GPU Compatibility Mode).lnk"
- CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME} (GPU Safe Mode).lnk" "$INSTDIR\${EXENAME}.exe" "-swrast" "$INSTDIR\${EXENAME}.exe" 0
- !insertmacro DemoteShortCut "$SMPROGRAMS\$StartMenuFolder\${APPNAME} (GPU Safe Mode).lnk"
- SectionEnd
复制代码之后,将编译生成的realse文件夹复制到deploy文件夹下,之后编译运行.
NSIS编译运行
二、QGC在Linux下打包方法编译时,添加CONFIG+=installer配置。
之后,之后正常运行,在编译目录下即可看到
Linux安装包结果
点击"QGroundControl"或者命令行执行“./qgroundcontrol-start.sh”。
|
 扫一扫浏览分享
|
|
|
|
|
|
|