From f1f3eb1185d8a460517b0a35895138a31465754a Mon Sep 17 00:00:00 2001 From: redtide Date: Mon, 2 Aug 2021 18:43:59 +0200 Subject: [PATCH] Updated InnoSetup configuration file and added related build script --- scripts/innosetup/innosetup.iss.in | 30 +++++++++------- scripts/innosetup/innosetup.sh | 55 ++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 scripts/innosetup/innosetup.sh diff --git a/scripts/innosetup/innosetup.iss.in b/scripts/innosetup/innosetup.iss.in index f085d271..83a730d8 100644 --- a/scripts/innosetup/innosetup.iss.in +++ b/scripts/innosetup/innosetup.iss.in @@ -4,7 +4,7 @@ #define MyAppURL "https://lite-xl.github.io" #define MyAppExeName "lite-xl.exe" #define BuildDir "@PROJECT_BUILD_DIR@" -#define SourceDir "." +#define SourceDir "@PROJECT_SOURCE_DIR@" ; Use /dArch option to create a setup for a different architecture, e.g.: ; iscc /dArch=x86 innosetup.iss @@ -34,7 +34,7 @@ ArchitecturesInstallIn64BitMode={#Arch} AllowNoIcons=yes Compression=lzma SolidCompression=yes -DefaultDirName={autopf}\{#MyAppName} +DefaultDirName={autopf}/{#MyAppName} DefaultGroupName={#MyAppPublisher} UninstallFilesDir={app} @@ -52,10 +52,10 @@ OutputBaseFilename=LiteXL-{#MyAppVersion}-{#Arch}-setup ;DisableDirPage=yes ;DisableProgramGroupPage=yes -LicenseFile={#SourceDir}\LICENSE -SetupIconFile={#SourceDir}\icon.ico -WizardImageFile="wizard-modern-image.bmp" -WizardSmallImageFile="litexl-55px.bmp" +LicenseFile={#SourceDir}/LICENSE +SetupIconFile={#SourceDir}/resources/icons/icon.ico +WizardImageFile="{#SourceDir}/scripts/innosetup/wizard-modern-image.bmp" +WizardSmallImageFile="{#SourceDir}/scripts/innosetup/litexl-55px.bmp" [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" @@ -66,18 +66,22 @@ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescrip Name: "portablemode"; Description: "Portable Mode"; Flags: unchecked [Files] -Source: "{#BuildDir}\lite-xl.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "{#BuildDir}\data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs +Source: "{#BuildDir}/src/lite-xl.exe"; DestDir: "{app}"; Flags: ignoreversion +; MSYS2 produces no external dlls on 32 bit builds when using lhelper +#if Arch=="x64" +Source: "{#BuildDir}/mingwLibs{#Arch}/*"; DestDir: "{app}"; Flags: ignoreversion +#endif +Source: "{#SourceDir}/data/*"; DestDir: "{app}/data"; Flags: ignoreversion recursesubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] -Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: not IsTaskSelected('portablemode') -Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Check: not IsTaskSelected('portablemode') +Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: not WizardIsTaskSelected('portablemode') +Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Check: not WizardIsTaskSelected('portablemode') Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon -Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon; Check: not IsTaskSelected('portablemode') +Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon; Check: not WizardIsTaskSelected('portablemode') [Run] -Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent +Filename: "{app}/{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [Setup] -Uninstallable=not IsTaskSelected('portablemode') +Uninstallable=not WizardIsTaskSelected('portablemode') diff --git a/scripts/innosetup/innosetup.sh b/scripts/innosetup/innosetup.sh new file mode 100644 index 00000000..b2d0e86c --- /dev/null +++ b/scripts/innosetup/innosetup.sh @@ -0,0 +1,55 @@ +#!/bin/bash +set -ex + +if [ ! -e "src/api/api.h" ]; then + echo "Please run this script from the root directory of Lite XL." + exit 1 +fi + +show_help(){ + echo + echo "Usage: $0 " + echo + echo "Available options:" + echo + echo "-b --builddir DIRNAME Sets the name of the build directory (not path)." + echo " Default: 'build'." + echo +} + +BUILD_DIR=build + +for i in "$@"; do + case $i in + -h|--belp) + show_help + exit 0 + ;; + -b|--BUILD_DIR) + BUILD_DIR="$2" + shift + shift + ;; + *) + # unknown option + ;; + esac +done + +if [[ -n $1 ]]; then + show_help + exit 1 +fi + +# TODO: Required MinGW dlls are built only (?) when using lhelper on 64 bit +if [[ $MSYSTEM == "MINGW64" ]]; then + ARCH=x64; + mingwLibsDir=$BUILD_DIR/mingwLibs$ARCH + mkdir -p "$mingwLibsDir" + ldd "$BUILD_DIR/src/lite-xl.exe" | grep mingw | awk '{print $3}' | xargs -I '{}' cp -v '{}' $mingwLibsDir +else + ARCH=Win32 +fi + +/c/Program\ Files\ \(x86\)/Inno\ Setup\ 6/ISCC.exe -dARCH=$ARCH $BUILD_DIR/innosetup.iss +mv $BUILD_DIR/LiteXL*.exe $(pwd)