Aykhan Hagverdili
Aykhan Hagverdili

Reputation: 29945

Statically link MSVC libraries, dynamically link Qt

I was deploying something I built with Qt, and it was dynamically linked because of LGPL. I used windeployqt.exe to collect necessary dlls, and it was working fine on Windows 10 machines. When I tried on a Windows 7 machine, I got this error:

The program can't start because MSVCP140.dll is missing from your computer.

After a little research, it turns out that MSVCP140.dll is a dll in System 32 that Visual Studio installs. I should either have my clients install Visual Studio, which is not an option in my case, or statically link it. I tried using /MT but I got:

Overriding /MT with /MD

Presumably because I can't statically link Qt libraries without compiling Qt itself statically. What I want to do is dynamically link Qt libraries, because of LGPL, and statically link MSVC libraries. Is there a way to do that? Preferably from the Qt creator.
I think including MSVCP140.dll with the program is not an option.

I am using Visual Studio 2019 and Qt 13.1

Upvotes: 1

Views: 1612

Answers (2)

Tercete
Tercete

Reputation: 31

As drescherjm said, the most easy way is to use NSIS... A simple script can create a package with all necessary files...

I create environment variables MSVC_FOLDER, QT_MAJOR_VERSION, etc to make this script work with 3 versions of Qt (5.5.1, 5.8 and 5.11) and 3 versions of Visual Studio (2010, 2013 and 2015)...

You can simplify all this...

A Sample script:

; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "Define name"
!define PRODUCT_VERSION "0.0.0.0"
!define PRODUCT_PUBLISHER "Define..."
!define PRODUCT_WEB_SITE "http://www.define.com.br"
!define PRODUCT_DIR_REGKEY "Software\YourCompany\${PRODUCT_NAME}"
!define PRODUCT_UNINST_KEY "Software\YourCompany\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; MUI 1.67 compatible ------
!include "MUI.nsh"

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\YourSistem.exe"
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

; Language files
!insertmacro MUI_LANGUAGE "PortugueseBR"

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "\Desenvol\Instaladores\${PRODUCT_NAME}\${PRODUCT_NAME}Setup.exe"
InstallDir "C:\${PRODUCT_NAME}"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show

Section "SeçãoPrincipal" SEC01

  !if /FileExists "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\${PRODUCT_NAME}.exe"
    !cd "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\"
    !system '"C:\Program Files (x86)\$%MSVC_FOLDER%\VC\bin\nmake.exe" /f Makefile clean '

    !cd "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\"
    !system '"C:\Qt\Qt$%QT_MAJOR_VERSION%.$%QT_MINOR_VERSION%.$%QT_REVISION%\$%QT_MAJOR_VERSION%.$%QT_MINOR_VERSION%\$%QT_COMPILER%\bin\windeployqt.exe" --qmldir ..\..\YourSistem\ . -release --no-qmltooling '
    !system 'rmdir /s /q private '
    !system 'rmdir /s /q QtGraphicalEffects '
    !system 'mkdir \Desenvol\Instaladores\${PRODUCT_NAME} '
  !endif

  !cd "${SCRIPT_FOLDER}"

  SetOutPath "$SYSDIR"
  File /nonfatal "C:\Program Files (x86)\$%MSVC_FOLDER%\VC\redist\x86\Microsoft.VC$%MSVC_RUNTIME%.CRT\msvcp$%MSVC_RUNTIME%.dll"
  File /nonfatal "C:\Program Files (x86)\$%MSVC_FOLDER%\VC\redist\x86\Microsoft.VC$%MSVC_RUNTIME%.CRT\msvcr$%MSVC_RUNTIME%.dll"
  SetOutPath "$INSTDIR"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\D3Dcompiler_43.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5Core.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5Gui.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5Qml.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5Quick.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5Network.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5PrintSupport.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5Sql.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5Svg.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\Qt5Widgets.dll"

  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\libEGL.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\libGLESV2.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\opengl32sw.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\${PRODUCT_NAME}.exe"
  File /nonfatal "\Desenvol\CPP\${SCRIPT_FOLDER}\*.ini"
  File /nonfatal "\Desenvol\CPP\${SCRIPT_FOLDER}\*.rwf"

  SetOutPath "$INSTDIR\QtQml\Models.2"
  File /nonfatal /r "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\QtQml\Models.2\*.*"

  SetOutPath "$INSTDIR\QtQuick"
  File /nonfatal /r "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\QtQuick\*.*"

  SetOutPath "$INSTDIR\QtQuick.2"
  File /nonfatal /r "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\QtQuick.2\*.*"

  SetOutPath "$INSTDIR\iconengines"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\iconengines\qsvgicon.dll"

  SetOutPath "$INSTDIR\imageformats"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qdds.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qgif.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qicns.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qico.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qjp2.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qjpeg.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qmng.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qsvg.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qtga.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qtiff.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qwbmp.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\imageformats\qwebp.dll"

  SetOutPath "$INSTDIR\platforms"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\platforms\qwindows.dll"

  SetOutPath "$INSTDIR\printsupport"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\printsupport\windowsprintersupport.dll"

  SetOutPath "$INSTDIR\Databases"
  File /nonfatal "\Desenvol\CPP\${PRODUCT_NAME}\Databases\${PRODUCT_NAME}.db"

  SetOutPath "$INSTDIR\sqldrivers"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\sqldrivers\qsqlite.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\sqldrivers\qsqlmysql.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\sqldrivers\qsqlodbc.dll"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\sqldrivers\qsqlpsql.dll"

  SetOutPath "$INSTDIR\translations"
  File /nonfatal "\Desenvol\CPP\${PRODUCT_NAME}\*.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_ca.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_cs.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_de.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_en.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_fi.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_fr.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_he.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_hu.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_it.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_ja.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_ko.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_lv.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_ru.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_sk.qm"
  File /nonfatal "\Desenvol\CPP\build-${PRODUCT_NAME}-Desktop_Qt_$%QT_MAJOR_VERSION%_$%QT_MINOR_VERSION%_$%QT_REVISION%_$%QT_COMPILER%_32bit-Release\release\translations\qt_uk.qm"

gone:

SectionEnd

Section -AdditionalIcons
  SetOutPath $INSTDIR
  WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"

  SetOutPath "$SMPROGRAMS\${PRODUCT_NAME}"
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninst.exe"
  CreateShortcut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe"

  CreateShortcut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe"

SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\${PRODUCT_NAME}.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\AppMainExe.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd


Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) foi removido com sucesso do seu computador."
FunctionEnd

Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Tem certeza que quer remover completamente $(^Name) e todos os seus componentes?" IDYES +2
  Abort
FunctionEnd

Function .onInit
    System::Call 'kernel32::CreateMutex(p 0, i 0, t "myMutex") p .r1 ?e'
     Pop $R0

     StrCmp $R0 0 +3
       MessageBox MB_OK|MB_ICONEXCLAMATION "O instalador já está em execução."
       Abort
FunctionEnd

Section Uninstall
  Delete "$INSTDIR\${PRODUCT_NAME}.url"
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\translations\qt_uk.qm"
  Delete "$INSTDIR\translations\qt_sk.qm"
  Delete "$INSTDIR\translations\qt_ru.qm"
  Delete "$INSTDIR\translations\qt_lv.qm"
  Delete "$INSTDIR\translations\qt_ko.qm"
  Delete "$INSTDIR\translations\qt_ja.qm"
  Delete "$INSTDIR\translations\qt_it.qm"
  Delete "$INSTDIR\translations\qt_hu.qm"
  Delete "$INSTDIR\translations\qt_he.qm"
  Delete "$INSTDIR\translations\qt_fr.qm"
  Delete "$INSTDIR\translations\qt_fi.qm"
  Delete "$INSTDIR\translations\qt_en.qm"
  Delete "$INSTDIR\translations\qt_de.qm"
  Delete "$INSTDIR\translations\qt_cs.qm"
  Delete "$INSTDIR\translations\qt_ca.qm"
  Delete "$INSTDIR\sqldrivers\qsqlpsql.dll"
  Delete "$INSTDIR\sqldrivers\qsqlodbc.dll"
  Delete "$INSTDIR\sqldrivers\qsqlmysql.dll"
  Delete "$INSTDIR\sqldrivers\qsqlite.dll"
  Delete "$INSTDIR\Qt5Widgets.dll"
  Delete "$INSTDIR\Qt5Svg.dll"
  Delete "$INSTDIR\Qt5Sql.dll"
  Delete "$INSTDIR\Qt5PrintSupport.dll"
  Delete "$INSTDIR\Qt5Network.dll"
  Delete "$INSTDIR\Qt5Gui.dll"
  Delete "$INSTDIR\Qt5Core.dll"
  Delete "$INSTDIR\Qt5Qml.dll"
  Delete "$INSTDIR\Qt5Quick.dll"
  Delete "$INSTDIR\opengl32sw.dll"
  Delete "$INSTDIR\libGLESV2.dll"
  Delete "$INSTDIR\libEGL.dll"
  Delete "$INSTDIR\printsupport\windowsprintersupport.dll"
  Delete "$INSTDIR\platforms\qwindows.dll"
  Delete "$INSTDIR\imageformats\qwebp.dll"
  Delete "$INSTDIR\imageformats\qwbmp.dll"
  Delete "$INSTDIR\imageformats\qtiff.dll"
  Delete "$INSTDIR\imageformats\qtga.dll"
  Delete "$INSTDIR\imageformats\qsvg.dll"
  Delete "$INSTDIR\imageformats\qmng.dll"
  Delete "$INSTDIR\imageformats\qjpeg.dll"
  Delete "$INSTDIR\imageformats\qjp2.dll"
  Delete "$INSTDIR\imageformats\qico.dll"
  Delete "$INSTDIR\imageformats\qicns.dll"
  Delete "$INSTDIR\imageformats\qgif.dll"
  Delete "$INSTDIR\imageformats\qdds.dll"
  Delete "$INSTDIR\iconengines\qsvgicon.dll"
  Delete "$INSTDIR\Databases\SisMega.db"
  Delete "$INSTDIR\D3Dcompiler_43.dll"
  Delete "$INSTDIR\bearer\qnativewifibearer.dll"
  Delete "$INSTDIR\bearer\qgenericbearer.dll"

  Delete "$INSTDIR\*.ini"
  Delete "$INSTDIR\*.log"
  Delete "$INSTDIR\*.rwf"
  Delete "$INSTDIR\*.html*"
  Delete "$INSTDIR\*.map"
  Delete "$INSTDIR\*.tsk"
  Delete "$INSTDIR\${PRODUCT_NAME}.exe"

  Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\Website.lnk"
  Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk"

  RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
  RMDir /r "$INSTDIR\translations"
  RMDir /r "$INSTDIR\sqldrivers"
  RMDir /r "$INSTDIR\printsupport"
  RMDir /r "$INSTDIR\platforms"
  RMDir /r "$INSTDIR\imageformats"
  RMDir /r "$INSTDIR\iconengines"
  RMDir /r "$INSTDIR\Databases"
  RMDir /r "$INSTDIR\bearer"
  RMDir /r "$INSTDIR\QtQml"
  RMDir /r "$INSTDIR\QtQuick"
  RMDir /r "$INSTDIR\QtQuick.2"
  RMDir "$INSTDIR"

  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd

Upvotes: 2

Adrian Mole
Adrian Mole

Reputation: 51815

In order for a target machine to run software built with Visual Studio, 2015 or later, you will need to install the latest MSVC run-time redistributable pack on it. Some systems (e.g. Windows 10) will already have a recent-enough version.

You can get the latest packs from here: vc_redist.XXX.exe depending on the target platform.

Selecting the "Link Statically" option only applies to the MFC libraries.

There is an old - but possibly quite helpful - Q & A here on Stack Overflow.

Upvotes: 3

Related Questions