Skip to content
This repository was archived by the owner on Dec 18, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion cmake-proxies/cmake-modules/AudacityInnoSetup.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@ if( INNO_SETUP_COMPILER )
-DOUTPUT_DIR=${TEMP_PACKAGE_PATH}
-DINNO_SETUP_COMPILER=${INNO_SETUP_COMPILER}
-DEMBED_MANUAL=${${_OPT}package_manual}
-DBUILDING_64_BIT=${IS_64BIT}
-DIS_64_BIT=${IS_64BIT}
-DSIGN=${${_OPT}perform_codesign}
-DWINDOWS_CERTIFICATE=${WINDOWS_CERTIFICATE}
-D WINDOWS_CERTIFICATE_PASSWORD=${WINDOWS_CERTIFICATE_PASSWORD}
-P "${CMAKE_SOURCE_DIR}/win/Inno_Setup_Wizard/BuildInnoSetupInstaller.cmake"
-D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-parallel ${CMAKE_BUILD_PARALLEL_LEVEL}
VERBATIM
)
Expand Down
3 changes: 3 additions & 0 deletions win/InnoSetupLanguages/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
If you manually add isl language files to this directory then the innosetup installer creation process will be able to find them.

Note that it ignores any file within this directory which is not *.isl
77 changes: 62 additions & 15 deletions win/Inno_Setup_Wizard/BuildInnoSetupInstaller.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
# SOURCE_DIR - should be set to CMAKE_SOURCE_DIR by teh caller
# OUTPUT_DIR - directory, where installer will be built
# INNO_SETUP_COMPILER - InnoSetup compiler executable
# BUILDING_64_BIT - Flag, that indicates that we are building a 64-bit installer
# IS_64_BIT - Flag, that indicates that we are building a 64-bit installer
# EMBED_MANUAL - embed a fresh copy of manual
# SIGN - sign the installer
# WINDOWS_CERTIFICATE - path to PFX file. If not present, env:WINDOWS_CERTIFICATE will be used
# WINDOWS_CERTIFICATE_PASSWORD - password for the PFX file. If not present, env:WINDOWS_CERTIFICATE_PASSWORD will be used

if( BUILDING_64_BIT )
# Allow if statements to use the new IN_LIST operator (compatibility override for CMake <3.3)
cmake_policy( SET CMP0057 NEW )

if( IS_64_BIT )
set( INSTALLER_SUFFIX "x64" )
set( INSTALLER_X64_MODE "ArchitecturesInstallIn64BitMode=x64")
else()
Expand Down Expand Up @@ -48,32 +51,76 @@ configure_file("${OUTPUT_DIR}/tenacity.iss.in" "${OUTPUT_DIR}/tenacity.iss")

file(COPY "${SOURCE_DIR}/presets" DESTINATION "${OUTPUT_DIR}/Additional")

file(COPY
file(COPY
"${SOURCE_DIR}/LICENSE.txt"
"${SOURCE_DIR}/README.md"
"${SOURCE_DIR}/win/README.rtf"
"${SOURCE_DIR}/win/tenacity.ico"
DESTINATION
"${SOURCE_DIR}/win/darktenacity.ico"
DESTINATION
"${OUTPUT_DIR}/Additional"
)

# "Install" prebuilt package
if( DEFINED CMAKE_BUILD_TYPE )
if( EXISTS "${BUILD_DIR}/bin/${CMAKE_BUILD_TYPE}" )
# Use CMAKE_BUILD_TYPE value if defined and previously built
set( INNOSETUP_BUILD_CONFIGURATIONS "${CMAKE_BUILD_TYPE};" )
else()
message( FATAL_ERROR "You defined a value for CMAKE_BUILD_TYPE which has not already been built, please build it and try again" )
endif()
elseif( DEFINED CMAKE_INSTALL_CONFIG_NAME )
if( EXISTS "${BUILD_DIR}/bin/${CMAKE_INSTALL_CONFIG_NAME}" )
# Use install --config value if defined and previously built
set( INNOSETUP_BUILD_CONFIGURATIONS "${CMAKE_INSTALL_CONFIG_NAME};" )
else()
message( FATAL_ERROR "You defined a value for CMAKE_INSTALL_CONFIG_NAME which has not already been built, please build it and try again" )
endif()
else()
# These are listed in order of preference in case more than one of them are built
# It must include all four configurations for this to work correctly on multi-config
set( INNOSETUP_BUILD_CONFIGURATIONS "MinSizeRel;Release;RelWithDebInfo;Debug" )
message( STATUS "You did not define a build type manually so we will attempt to find build types in this order: ${INNOSETUP_BUILD_CONFIGURATIONS}" )
endif()

execute_process(
COMMAND
${CMAKE_COMMAND}
--install ${BUILD_DIR}
--prefix "${OUTPUT_DIR}/Package"
)
# "Install" prebuilt package

# Build the installer
set( VALID_BUILD_TYPE_FOUND FALSE )
foreach( config ${INNOSETUP_BUILD_CONFIGURATIONS} )
file( GLOB VALID_BUILD
"${BUILD_DIR}/bin/${config}/Tenacity" "${BUILD_DIR}/bin/${config}/Tenacity.*"
"${BUILD_DIR}/bin/${config}/tenacity" "${BUILD_DIR}/bin/${config}/tenacity.*"
)
if( VALID_BUILD )
message ( STATUS "Using build type ${config} to create innosetup installer" )
execute_process(
COMMAND
${CMAKE_COMMAND}
--install ${BUILD_DIR}
--prefix "${OUTPUT_DIR}/Package"
--config ${config}
# When we upgrade to CMake min version 3.19 we can use this
# COMMAND_ERROR_IS_FATAL ANY
)
set( VALID_BUILD_TYPE_FOUND TRUE FORCE )
set( VALID_BUILD_TYPE ${config} )
break()
endif()
endforeach()

if( NOT VALID_BUILD_TYPE_FOUND )
message( FATAL_ERROR "You must build the project successfully before building the innosetup target" )
endif()

execute_process(
COMMAND
${INNO_SETUP_COMPILER} /Sbyparam=$p "tenacity.iss"
${INNO_SETUP_COMPILER} /Sbyparam=$p "tenacity.iss" /Qp
WORKING_DIRECTORY
${OUTPUT_DIR}
# When we upgrade to CMake min version 3.19 we can use this
# COMMAND_ERROR_IS_FATAL ANY
)

# Emulate CPack behavior
# If we enable COMMAND_ERROR_IS_FATAL then if we reach here we are sure we successfully created the installer
# message ( STATUS "Successfully created innosetup installer using build type ${VALID_BUILD_TYPE}" )

# Emulate CPack behavior
file( COPY "${OUTPUT_DIR}/Output/" DESTINATION "${BUILD_DIR}/package" )
101 changes: 45 additions & 56 deletions win/Inno_Setup_Wizard/tenacity.iss.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,81 +3,71 @@
; License: GPL v2. See License.txt.
;
; tenacity.iss
; Vaughan Johnson, Leland Lucius, Martyn Shaw, Richard Ash, & others
;

; This requires that the ISS Preprocessor be installed

#define AppExe "Package\tenacity.exe"
#define AppExe "Package\tenacity.exe"
#define AppMajor ""
#define AppMinor ""
#define AppRev ""
#define AppBuild ""
#define FullVersion ParseVersion(AppExe, AppMajor, AppMinor, AppRev, AppBuild)
#define FullVersion GetVersionComponents(AppExe, AppMajor, AppMinor, AppRev, AppBuild)
#define AppVersion Str(AppMajor) + "." + Str(AppMinor) + "." + Str(AppRev)
#define AppName GetStringFileInfo(AppExe, PRODUCT_NAME)

[UninstallRun]
; Uninstall prior installations.
Filename: "{app}\unins*.*";
Filename: "{app}\unins*.*"; RunOnceId: "UninstallPrior"

[Setup]
; compiler-related directives
OutputBaseFilename=tenacity-win-{#AppVersion}-@INSTALLER_SUFFIX@

; Use 100% images by default
; Icons
SetupIconFile="Additional\tenacity.ico"
UninstallDisplayIcon="{app}\tenacity.exe"
WizardImageFile=".\tenacity_InnoWizardImage_100.bmp"
WizardSmallImageFile=".\tenacity_InnoWizardSmallImage_100.bmp"

SolidCompression=yes

; installer-related directives
; From Inno 5.5.7, Inno defaults to disabling the Welcome page as recommended
; by Microsoft's desktop applications guideline, but we don't want to do that.
DisableWelcomePage=no

; App/Version information
AppName={#AppName}
AppVerName=Tenacity {#AppVersion}
; Specify AppVersion as well, so it appears in the Add/Remove Programs entry.
AppVersion={#AppVersion}
AppPublisher="Tenacity Team"
AppPublisherURL=https://tenacityaudio.org/
AppSupportURL=https://tenacityaudio.org/
AppUpdatesURL=https://tenacityaudio.org/
ChangesAssociations=yes
@INSTALLER_X64_MODE@

DefaultDirName={commonpf}\Tenacity

VersionInfoProductName={#AppName}
VersionInfoProductTextVersion={#GetFileProductVersion(AppExe)}
VersionInfoDescription={#AppName + " " + AppVersion + " Setup"}
VersionInfoVersion={#GetFileVersion(AppExe)}
VersionInfoVersion={#GetVersionNumbersString(AppExe)}
VersionInfoCopyright={#GetFileCopyright(AppExe)}

; Don't disable the "Select Destination Location" wizard, even if
; Default install location
DefaultDirName={commonpf}\Tenacity

; Tells explorer to refresh file assocations to pickup any changes
ChangesAssociations=yes

; Does package->compress instead of compress->package
SolidCompression=yes

; Don't disable the "Select Destination Location" wizard, even if
; Tenacity is already installed.
DisableDirPage=no

; Always warn if dir exists, because we'll overwrite previous Tenacity.
DirExistsWarning=yes
DisableProgramGroupPage=yes
UninstallDisplayIcon="{app}\tenacity.exe"

; No longer force them to accept the license, just display it. LicenseFile=..\LICENSE.txt
InfoBeforeFile=".\tenacity_InnoWizard_InfoBefore.rtf"
InfoAfterFile=Additional\README.md
; Always show welcome page
DisableWelcomePage=no

; We no longer produce new ANSI builds.
; As we use Inno Setup (u), the Unicode version, to build this script,
; the MinVersion will automatically be set to what we need.
; We no longer explicitly set it.
; MinVersion=4.0,5.0
; Display license information before install
InfoBeforeFile=".\tenacity_InnoWizard_InfoBefore.rtf"

; cosmetic-related directives
SetupIconFile="Additional\tenacity.ico"
; Display README after install
InfoAfterFile=Additional\README.rtf

; Directives using information passed by CMake
@INSTALLER_X64_MODE@
@SIGN_TOOL@
OutputBaseFilename=tenacity-win-{#AppVersion}-@INSTALLER_SUFFIX@

[INI]
Filename: "{app}\FirstTime.ini"; Section: "FromInno"; Key: "ResetPrefs"; String: "1"; Tasks: resetPrefs;
Expand All @@ -93,8 +83,8 @@ Name: resetPrefs; Description: "{cm:ResetPrefs}"; Flags: unchecked
; Prime the first time .ini file so the permissions can be set
Source: ".\FirstTimeModel.ini"; DestDir: "{app}"; DestName: "FirstTime.ini"; Permissions: users-modify

; Don't display in separate window, rather as InfoAfterFile. Source: "..\README.md"; DestDir: "{app}"; Flags: ignoreversion isreadme
Source: "Additional\README.md"; DestDir: "{app}"; Flags: ignoreversion
; Manually create RTF version of README
Source: "Additional\README.rtf"; DestDir: "{app}"; Flags: ignoreversion

Source: "Additional\LICENSE.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#AppExe}"; DestDir: "{app}"; Flags: ignoreversion
Expand Down Expand Up @@ -150,7 +140,7 @@ end;
procedure InitializeWizard;
begin
{ If using larger scaling, load the correct size of images }
if GetScalingFactor > 100 then
if GetScalingFactor > 100 then
begin
LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'tenacity_InnoWizardImage');
LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'tenacity_InnoWizardImage');
Expand All @@ -163,32 +153,31 @@ Name: "{commonprograms}\Tenacity"; Filename: "{app}\tenacity.exe"
Name: "{commondesktop}\Tenacity"; Filename: "{app}\tenacity.exe"; Tasks: desktopicon

[InstallDelete]
; Get rid of Tenacity 1.0.0 stuff that's no longer used.
Type: files; Name: "{app}\tenacity-help.htb"
Type: files; Name: "{app}\tenacity-1.2-help.htb"

; Get rid of previous versions of MSVC runtimes.
; Get rid of previous versions of MSVC runtimes
; Currently MSVC runtime versions 8, 9, 10, 11, 12, 13
Type: files; Name: "{app}\Microsoft.VC80.CRT.manifest"
Type: files; Name: "{app}\Microsoft.VC90.CRT.manifest"
Type: files; Name: "{app}\msvcp80.dll"
Type: files; Name: "{app}\msvcr80.dll"
Type: files; Name: "{app}\Microsoft.VC90.CRT.manifest"
Type: files; Name: "{app}\msvcp90.dll"
Type: files; Name: "{app}\msvcr90.dll"
Type: files; Name: "{app}\Microsoft.VC100.CRT.manifest"
Type: files; Name: "{app}\msvcp100.dll"
Type: files; Name: "{app}\msvcr100.dll"
Type: files; Name: "{app}\Microsoft.VC110.CRT.manifest"
Type: files; Name: "{app}\msvcp110.dll"
Type: files; Name: "{app}\msvcr110.dll"
Type: files; Name: "{app}\Microsoft.VC120.CRT.manifest"
Type: files; Name: "{app}\msvcp120.dll"
Type: files; Name: "{app}\msvcr120.dll"
Type: files; Name: "{app}\Microsoft.VC130.CRT.manifest"
Type: files; Name: "{app}\msvcp130.dll"
Type: files; Name: "{app}\msvcr130.dll"

; Get rid of previous help folder.
Type: filesandordirs; Name: "{app}\help"

; Don't want to do this because user may have stored their own.
; Type: filesandordirs; Name: "{app}\vst"

; We've switched from a folder in the start menu to just the Tenacity.exe at the top level.
; Get rid of 1.0.0 folder and its icons.
Type: files; Name: "{commonprograms}\Tenacity\tenacity.exe"
Type: files; Name: "{commonprograms}\Tenacity\unins000.exe"
Type: dirifempty; Name: "{commonprograms}\Tenacity"

;Get rid of previous uninstall item
Type: files; Name: "{app}\unins*.*"

Expand Down Expand Up @@ -217,7 +206,7 @@ Type: files; Name: "{app}\Plug-Ins\gverb_1216.dll"
Type: files; Name: "{app}\Plug-Ins\crossfadein.ny"
Type: files; Name: "{app}\Plug-Ins\crossfadeout.ny"
Type: files; Name: "{app}\Plug-Ins\clicktrack.ny"

[Registry]
; No longer allow user to choose whether to associate AUP file type with Tenacity.
; Leaving this one commented out example of the old way.
Expand Down Expand Up @@ -248,7 +237,7 @@ Filename: "{app}\tenacity.exe"; Description: "{cm:LaunchProgram,Tenacity}"; Flag
; http://www.jrsoftware.org/files/istrans/
;
; Set this to the base of the unofficial Inno Setup translations
#define UrlBase "http://raw.github.com/jrsoftware/issrc/master/Files/Languages/Unofficial/"
#define UrlBase "https://raw.githubusercontent.com/jrsoftware/issrc/main/Files/Languages/Unofficial/"

; This macro will use the Windows PowerShell to download the given translation into
; the Inno Setup Languages folder if it hasn't already been downloaded.
Expand Down
Binary file modified win/Inno_Setup_Wizard/tenacity_InnoWizard_InfoBefore.rtf
Binary file not shown.
Binary file added win/README.rtf
Binary file not shown.
File renamed without changes.