WindowsInstaller: multiple improvements and fixes
move windowsinstaller to /package update artwork adapt to conda builds make msvc redist directory optional automate version information definition use relative directories for file locations definitions improve/update readme partially update Delete.bat for qt6 libpack add .gitignore update signing.bat and add hashing command WindowsInstaller: use --safe-mode in freecadcmd commands [skip ci] WindowsInstaller: make windows 8 the minimum version [skip ci] WindowsInstaller: allow configuring some values via command line windows installer update for qt6 build
5
package/WindowsInstaller/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
*.exe
|
||||
*-SHA256.txt
|
||||
MSVCRedist
|
||||
FreeCAD
|
||||
version.nsh
|
||||
47
package/WindowsInstaller/Delete.bat
Normal file
@@ -0,0 +1,47 @@
|
||||
del /S *_d.*
|
||||
del /S *_debug.*
|
||||
del /S *.pyc
|
||||
del /S *.pdb
|
||||
del /S boost*-gd-*.dll
|
||||
cd bin
|
||||
del assistant.exe
|
||||
del Coin4d.dll
|
||||
del designer.exe
|
||||
del freetyped.dll
|
||||
del libcrypto-3d.dll
|
||||
del libEGLd.dll
|
||||
del libGLESv2d.dll
|
||||
del libssl-3d.dll
|
||||
del linguist.exe
|
||||
del qdoc.exe
|
||||
del Qt6Concurrentd.dll
|
||||
del Qt6Cored.dll
|
||||
del Qt6DBusd.dll
|
||||
del Qt6DesignerComponentsd.dll
|
||||
del Qt6Designerd.dll
|
||||
del Qt6Guid.dll
|
||||
del Qt6Helpd.dll
|
||||
del Qt6LabsAnimationd.dll
|
||||
del Qt6LabsFolderListModeld.dll
|
||||
del Qt6LabsPlatformd.dll
|
||||
del Qt6LabsSettingsd.dll
|
||||
del Qt6LabsSharedImaged.dll
|
||||
del Qt6LabsWavefrontMeshd.dll
|
||||
del Qt6MultimediaWidgetsd.dll
|
||||
del Qt6Multimediad.dll
|
||||
del Qt6Networkd.dll
|
||||
del Qt6OpenGLWidgetsd.dll
|
||||
del Qt6OpenGLd.dll
|
||||
del Qt6PrintSupportd.dll
|
||||
del Qt6SpatialAudiod.dll
|
||||
del Qt6Sqld.dll
|
||||
del Qt6SvgWidgetsd.dll
|
||||
del Qt6Svgd.dll
|
||||
del Qt6Testd.dll
|
||||
del Qt6UiToolsd.dll
|
||||
del Qt6Widgetsd.dll
|
||||
del Qt6Xmld.dll
|
||||
del QtWebEngineProcessd.exe
|
||||
del Quarter1d.dll
|
||||
del xerces-c_3_2D.dll
|
||||
del zlibd.dll
|
||||
62
package/WindowsInstaller/Settings.nsh
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
|
||||
Settings for FreeCAD installer
|
||||
|
||||
These typically need to be modified for each FreeCAD release
|
||||
|
||||
*/
|
||||
|
||||
# Make the installer as small as possible
|
||||
# Using /SOLID is usually better for file size but it can't be used if the original size is
|
||||
# more than 2GB, if building with /SOLID fails try disabling it
|
||||
# comment this or use /DFC_TEST_BUILD command line option for testing builds since it will reduce
|
||||
# the time to create an installer a lot at the cost of a much greater file size.
|
||||
# So assure it is active for release builds!
|
||||
!ifndef FC_TEST_BUILD
|
||||
SetCompressor /SOLID lzma
|
||||
!endif
|
||||
|
||||
#--------------------------------
|
||||
# File locations
|
||||
# !!! you may need to adjust them to the folders in your Windows system !!!
|
||||
# can be specified with /D command line argument to makensis.exe
|
||||
!ifndef FILES_FREECAD
|
||||
!define FILES_FREECAD "${__FILEDIR__}\FreeCAD"
|
||||
!endif
|
||||
!ifndef FILES_THUMBS
|
||||
!define FILES_THUMBS "${__FILEDIR__}\thumbnail"
|
||||
!endif
|
||||
|
||||
# msvc redistributables location is required for LibPack builds but not conda
|
||||
# when using a LibPack build set the redistributables directory location here
|
||||
# or with /D command line argument to makensis.exe
|
||||
#!define FILES_DEPS "${__FILEDIR__}\MSVCRedist"
|
||||
|
||||
#--------------------------------
|
||||
# get version info from freecadcmd
|
||||
!system "${FILES_FREECAD}\bin\freecadcmd.exe --safe-mode -c $\"import datetime; print(f'!define COPYRIGHT_YEAR {datetime.date.today().year}')$\">${__FILEDIR__}\version.nsh" = 0
|
||||
!system "${FILES_FREECAD}\bin\freecadcmd.exe --safe-mode -c $\"print(f'!define APP_VERSION_MAJOR \$\"{App.Version()[0]}\$\"')$\">>${__FILEDIR__}\version.nsh" = 0
|
||||
!system "${FILES_FREECAD}\bin\freecadcmd.exe --safe-mode -c $\"print(f'!define APP_VERSION_MINOR \$\"{App.Version()[1]}\$\"')$\">>${__FILEDIR__}\version.nsh" = 0
|
||||
!system "${FILES_FREECAD}\bin\freecadcmd.exe --safe-mode -c $\"print(f'!define APP_VERSION_PATCH \$\"{App.Version()[2]}\$\"')$\">>${__FILEDIR__}\version.nsh" = 0
|
||||
!system "${FILES_FREECAD}\bin\freecadcmd.exe --safe-mode -c $\"print(f'!define APP_VERSION_REVISION \$\"{App.Version()[3].split()[0]}\$\"')$\">>${__FILEDIR__}\version.nsh" = 0
|
||||
!include "${__FILEDIR__}\version.nsh"
|
||||
!delfile "${__FILEDIR__}\version.nsh"
|
||||
|
||||
!define APP_VERSION_EMERGENCY "" # use "1" for an emergency release of FreeCAD otherwise ""
|
||||
# alternatively you can use APP_VERSION_EMERGENCY for a custom suffix of the version number
|
||||
!define APP_EMERGENCY_DOT "" # use "." for an emergency release of FreeCAD otherwise ""
|
||||
!define APP_VERSION_BUILD 1 # Start with 1 for the installer releases of each version
|
||||
|
||||
!define APP_VERSION "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_PATCH}${APP_EMERGENCY_DOT}${APP_VERSION_EMERGENCY}" # Version to display
|
||||
|
||||
#--------------------------------
|
||||
# Installer file name
|
||||
# Typical names for the release are "FreeCAD-020-Installer-1.exe" etc.
|
||||
|
||||
!ifndef ExeFile
|
||||
!define ExeFile "${APP_NAME}_${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_PATCH}${APP_VERSION_EMERGENCY}-Windows-x86_64-installer-${APP_VERSION_BUILD}.exe"
|
||||
!endif
|
||||
|
||||
#--------------------------------
|
||||
# installer bit type - FreeCAD is only provided as 64bit build
|
||||
!define MULTIUSER_USE_PROGRAMFILES64
|
||||
@@ -1 +1,2 @@
|
||||
signtool.exe sign /f FCweborg.pfx /p FreeCADIsCool /fd sha512 /tr http://timestamp.digicert.com /td sha512 /v %1
|
||||
certutil -hashfile %1 SHA256 > %1-SHA256.txt
|
||||
BIN
package/WindowsInstaller/graphics/banner.bmp
Normal file
|
After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
BIN
package/WindowsInstaller/graphics/header.bmp
Normal file
|
After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
@@ -13,13 +13,13 @@ Configuration and variables of FreeCAD installer
|
||||
# Names and version
|
||||
|
||||
!define APP_NAME "FreeCAD"
|
||||
!define APP_VERSION_NUMBER "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_REVISION}.${APP_VERSION_BUILD}"
|
||||
!define APP_VERSION_NUMBER "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_PATCH}.${APP_VERSION_BUILD}"
|
||||
# For the proposed install folder we use the scheme "FreeCAD 0.18"
|
||||
# however for the Registry, we need the scheme "FreeCAD 0.18.x" in order
|
||||
# to check if it is exactly this version (to support side-by-side installations)
|
||||
!define APP_SERIES_NAME "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}"
|
||||
!define APP_SERIES_KEY "${APP_VERSION_MAJOR}${APP_VERSION_MINOR}${APP_VERSION_REVISION}${APP_VERSION_EMERGENCY}"
|
||||
!define APP_SERIES_KEY2 "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_REVISION}${APP_EMERGENCY_DOT}${APP_VERSION_EMERGENCY}"
|
||||
!define APP_SERIES_KEY "${APP_VERSION_MAJOR}${APP_VERSION_MINOR}${APP_VERSION_PATCH}${APP_VERSION_EMERGENCY}"
|
||||
!define APP_SERIES_KEY2 "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_PATCH}${APP_EMERGENCY_DOT}${APP_VERSION_EMERGENCY}"
|
||||
!define APP_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${APP_NAME}.exe"
|
||||
!define APP_DIR "${APP_NAME} ${APP_SERIES_NAME}"
|
||||
# Fixme: FC should use different preferences folder for every release
|
||||
@@ -60,7 +60,7 @@ Configuration and variables of FreeCAD installer
|
||||
|
||||
!define SETUP_ICON "icons\FreeCAD.ico"
|
||||
!define SETUP_HEADERIMAGE "graphics\header.bmp"
|
||||
!define SETUP_WIZARDIMAGE "graphics\orange.bmp"
|
||||
!define SETUP_WIZARDIMAGE "graphics\banner.bmp"
|
||||
!define SETUP_UNINSTALLER "Uninstall-${APP_NAME}.exe"
|
||||
!define SETUP_UNINSTALLER_KEY "${APP_NAME}${APP_SERIES_KEY}"
|
||||
|
||||
@@ -92,7 +92,7 @@ BrandingText " "
|
||||
|
||||
VIProductVersion "${APP_VERSION_NUMBER}"
|
||||
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "${APP_NAME}"
|
||||
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "${APP_DIR}.${APP_VERSION_REVISION}"
|
||||
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "${APP_DIR}.${APP_VERSION_PATCH}"
|
||||
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "${APP_INFO}"
|
||||
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${APP_VERSION}"
|
||||
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "${APP_COPYRIGHT}"
|
||||
@@ -50,7 +50,7 @@ Function PostMultiUserPageInit
|
||||
|
||||
# check if there is an existing FreeCAD installation of the same FreeCAD series
|
||||
# we usually don't release more than 10 versions so with 20 we are safe to check if a newer version is installed
|
||||
IntOp $4 ${APP_VERSION_REVISION} + 20
|
||||
IntOp $4 ${APP_VERSION_PATCH} + 20
|
||||
${for} $5 0 $4
|
||||
ReadRegStr $0 SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}${APP_VERSION_MAJOR}${APP_VERSION_MINOR}$5" "DisplayVersion"
|
||||
# also check for an emergency release
|
||||
@@ -110,7 +110,8 @@ Function .onInit
|
||||
${orif} $R0 == "5.1" # XP
|
||||
${orif} $R0 == "5.2" # 2003
|
||||
${orif} $R0 == "6.0" # Vista
|
||||
MessageBox MB_OK|MB_ICONSTOP "${APP_NAME} ${APP_VERSION} requires Windows 7 or newer." /SD IDOK
|
||||
${orif} $R0 == "6.1" # 7
|
||||
MessageBox MB_OK|MB_ICONSTOP "${APP_NAME} ${APP_VERSION} requires Windows 8 or newer." /SD IDOK
|
||||
Quit
|
||||
${endif}
|
||||
|
||||
@@ -130,7 +131,7 @@ Function .onInit
|
||||
# plugin must be unloaded
|
||||
${nsProcess::Unload}
|
||||
|
||||
# initialize the multi-uder installer UI
|
||||
# initialize the multi-user installer UI
|
||||
!insertmacro MULTIUSER_INIT
|
||||
|
||||
# this can be reset to "true" in section SecDesktop
|
||||
@@ -18,8 +18,8 @@
|
||||
# and returns the number of the character in the FindStr where the SearchStr was found (Pointer)
|
||||
# if nothing was found or the search is impossible the Pointer is set to -1
|
||||
|
||||
StrLen $R2 ${SearchStr}
|
||||
StrLen $R4 ${FindStr}
|
||||
StrLen $R2 "${SearchStr}"
|
||||
StrLen $R4 "${FindStr}"
|
||||
StrCpy $R5 0
|
||||
${if} $R2 == 0
|
||||
${orif} $R4 == 0
|
||||
@@ -27,8 +27,8 @@
|
||||
${endif}
|
||||
IntCmp $R4 $R2 loopA NotFound
|
||||
loopA:
|
||||
StrCpy $R3 ${FindStr} $R2 $R5
|
||||
StrCmp $R3 ${SearchStr} Found
|
||||
StrCpy $R3 "${FindStr}" $R2 $R5
|
||||
StrCmp $R3 "${SearchStr}" Found
|
||||
IntOp $R5 $R5 + 1
|
||||
IntCmp $R4 $R5 loopA NotFound
|
||||
Goto loopA
|
||||
@@ -8,14 +8,15 @@ Installation of program files, dictionaries and external components
|
||||
|
||||
#--------------------------------
|
||||
# Program files
|
||||
!include LogicLib.nsh
|
||||
|
||||
Section -ProgramFiles SecProgramFiles
|
||||
|
||||
# if the $INSTDIR does not contain "FreeCAD" we must add a subfolder to avoid that FreeCAD will e.g.
|
||||
# be installed directly to C:\programs - the uninstaller will then delete the whole
|
||||
# C:\programs directory
|
||||
StrCpy $String $INSTDIR
|
||||
StrCpy $Search ${APP_NAME}
|
||||
StrCpy $String "$INSTDIR"
|
||||
StrCpy $Search "${APP_NAME}"
|
||||
Call StrPoint # function from Utils.nsh
|
||||
${if} $Pointer == "-1"
|
||||
StrCpy $INSTDIR "$INSTDIR\${APP_DIR}"
|
||||
@@ -38,8 +39,11 @@ Section -ProgramFiles SecProgramFiles
|
||||
File /r "${FILES_FREECAD}\bin\*.*"
|
||||
|
||||
# MSVC redistributable DLLs
|
||||
!ifdef FILES_DEPS
|
||||
!echo "Including MSVC Redist files from ${FILES_DEPS}"
|
||||
SetOutPath "$INSTDIR\bin"
|
||||
File "${FILES_DEPS}\*.*"
|
||||
!endif
|
||||
|
||||
# Others
|
||||
SetOutPath "$INSTDIR\data"
|
||||
@@ -52,10 +56,6 @@ Section -ProgramFiles SecProgramFiles
|
||||
File /r "${FILES_FREECAD}\lib\*.*"
|
||||
SetOutPath "$INSTDIR\Mod"
|
||||
File /r "${FILES_FREECAD}\Mod\*.*"
|
||||
SetOutPath "$INSTDIR\resources"
|
||||
File /r "${FILES_FREECAD}\resources\*.*"
|
||||
SetOutPath "$INSTDIR\translations"
|
||||
File /r "${FILES_FREECAD}\translations\*.*"
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "${FILES_THUMBS}"
|
||||
|
||||
|
Before Width: | Height: | Size: 617 KiB |
|
Before Width: | Height: | Size: 123 KiB |
@@ -1,88 +0,0 @@
|
||||
del /S *_d.*
|
||||
del /S *_debug.*
|
||||
del /S *.pyc
|
||||
del /S *.pdb
|
||||
del /S boost*-gd-*.dll
|
||||
cd bin
|
||||
del assistant.exe
|
||||
del Coin4d.dll
|
||||
del designer.exe
|
||||
del freetyped.dll
|
||||
del libcrypto-3d.dll
|
||||
del libEGLd.dll
|
||||
del libGLESv2d.dll
|
||||
del libssl-3d.dll
|
||||
del linguist.exe
|
||||
del qdoc.exe
|
||||
del Qt53DAnimationd.dll
|
||||
del Qt53DCored.dll
|
||||
del Qt53DExtrasd.dll
|
||||
del Qt53DInputd.dll
|
||||
del Qt53DLogicd.dll
|
||||
del Qt53DQuickAnimationd.dll
|
||||
del Qt53DQuickd.dll
|
||||
del Qt53DQuickExtrasd.dll
|
||||
del Qt53DQuickInputd.dll
|
||||
del Qt53DQuickRenderd.dll
|
||||
del Qt53DQuickScene2Dd.dll
|
||||
del Qt53DRenderd.dll
|
||||
del Qt5Bluetoothd.dll
|
||||
del Qt5Bodymovind.dll
|
||||
del Qt5Chartsd.dll
|
||||
del Qt5Concurrentd.dll
|
||||
del Qt5Cored.dll
|
||||
del Qt5DataVisualizationd.dll
|
||||
del Qt5DBusd.dll
|
||||
del Qt5DesignerComponentsd.dll
|
||||
del Qt5Designerd.dll
|
||||
del Qt5Gamepadd.dll
|
||||
del Qt5Guid.dll
|
||||
del Qt5Helpd.dll
|
||||
del Qt5Locationd.dll
|
||||
del Qt5Multimediad.dll
|
||||
del Qt5MultimediaQuickd.dll
|
||||
del Qt5MultimediaWidgetsd.dll
|
||||
del Qt5NetworkAuthd.dll
|
||||
del Qt5Networkd.dll
|
||||
del Qt5Nfcd.dll
|
||||
del Qt5OpenGLd.dll
|
||||
del Qt5Pdfd.dll
|
||||
del Qt5PdfWidgetsd.dll
|
||||
del Qt5Positioningd.dll
|
||||
del Qt5PositioningQuickd.dll
|
||||
del Qt5PrintSupportd.dll
|
||||
del Qt5Purchasingd.dll
|
||||
del Qt5Qmld.dll
|
||||
del Qt5QmlModelsd.dll
|
||||
del Qt5QmlWorkerScriptd.dll
|
||||
del Qt5Quick3DAssetImportd.dll
|
||||
del Qt5Quick3Dd.dll
|
||||
del Qt5Quick3DRenderd.dll
|
||||
del Qt5Quick3DRuntimeRenderd.dll
|
||||
del Qt5Quick3DUtilsd.dll
|
||||
del Qt5QuickControls2d.dll
|
||||
del Qt5Quickd.dll
|
||||
del Qt5QuickParticlesd.dll
|
||||
del Qt5QuickShapesd.dll
|
||||
del Qt5QuickTemplates2d.dll
|
||||
del Qt5QuickTestd.dll
|
||||
del Qt5QuickWidgetsd.dll
|
||||
del Qt5RemoteObjectsd.dll
|
||||
del Qt5Scriptd.dll
|
||||
del Qt5ScriptToolsd.dll
|
||||
del Qt5Scxmld.dll
|
||||
del Qt5Sensorsd.dll
|
||||
del Qt5SerialBusd.dll
|
||||
del Qt5SerialPortd.dll
|
||||
del Qt5Sqld.dll
|
||||
del Qt5Svgd.dll
|
||||
del Qt5Testd.dll
|
||||
del Qt5TextToSpeechd.dll
|
||||
del Qt5VirtualKeyboardd.dll
|
||||
del Qt5Widgetsd.dll
|
||||
del Qt5WinExtrasd.dll
|
||||
del Qt5Xmld.dll
|
||||
del Qt5XmlPatternsd.dll
|
||||
del Quarter1d.dll
|
||||
del xerces-c_3_2D.dll
|
||||
del zlibd.dll
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
|
||||
Settings for FreeCAD installer
|
||||
|
||||
These typically need to be modified for each FreeCAD release
|
||||
|
||||
*/
|
||||
|
||||
# Make the installer as small as possible
|
||||
# comment this for testing builds since it will reduce the time to create an installer
|
||||
# a lot - for the cost of a much greater file size.
|
||||
# So assure it is active for release builds!
|
||||
SetCompressor /SOLID lzma
|
||||
|
||||
#--------------------------------
|
||||
# Version number
|
||||
|
||||
!define APP_VERSION_MAJOR 0
|
||||
!define APP_VERSION_MINOR 22
|
||||
!define APP_VERSION_REVISION 0
|
||||
!define APP_VERSION_EMERGENCY "beta" # use "1" for an emergency release of FreeCAD otherwise ""
|
||||
# alternatively you can use APP_VERSION_EMERGENCY for a custom suffix of the version number
|
||||
!define APP_EMERGENCY_DOT "" # use "." for an emergency release of FreeCAD otherwise ""
|
||||
!define APP_VERSION_BUILD 1 # Start with 1 for the installer releases of each version
|
||||
|
||||
!define APP_VERSION "${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_REVISION}${APP_EMERGENCY_DOT}${APP_VERSION_EMERGENCY}" # Version to display
|
||||
|
||||
!define COPYRIGHT_YEAR 2023
|
||||
|
||||
#--------------------------------
|
||||
# Installer file name
|
||||
# Typical names for the release are "FreeCAD-020-Installer-1.exe" etc.
|
||||
|
||||
!define ExeFile "${APP_NAME}-${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_REVISION}${APP_VERSION_EMERGENCY}-WIN-x64-installer-${APP_VERSION_BUILD}.exe"
|
||||
|
||||
#--------------------------------
|
||||
# installer bit type - FreeCAD is only provided as 64bit build
|
||||
!define MULTIUSER_USE_PROGRAMFILES64
|
||||
|
||||
#--------------------------------
|
||||
# File locations
|
||||
# !!! you need to adjust them to the folders in your Windows system !!!
|
||||
|
||||
!define FILES_FREECAD "G:\FreeCADInst\Installer\FreeCAD"
|
||||
!define FILES_DEPS "G:\FreeCADInst\Installer\MSVCRedist"
|
||||
!define FILES_THUMBS "G:\FreeCADInst\Installer\thumbnail"
|
||||
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 201 KiB |