Click here to Skip to main content
15,896,439 members
Articles / Programming Languages / SQL

Inno Setup Dependency Installer

Rate me:
Please Sign up or sign in to vote.
4.91/5 (191 votes)
7 Aug 2023CPOL2 min read 1.7M   24.9K   427   392
Download and install any dependency such as .NET, Visual C++ or SQL Server during your application's installation!
In this article, you will see installation, usage, integration, details, and dependencies of Inno Setup Dependency Installer.

Inno Setup Dependency Installer

Introduction

Inno Setup Dependency Installer can download and install any dependency such as .NET, Visual C++ or SQL Server during your application's installation. In addition, it is easy to add your own dependencies as well.

Installation and Usage

  1. Download and install Inno Setup 6.2+.
  2. Download the script from here or from the Github repository.
  3. Open the extracted ExampleSetup.iss file.
  4. Comment out dependency function calls inside InitializeSetup function to disable installing them:
    • Pascal
      Dependency_AddVC2013;   // installed in example setup
      //Dependency_AddVC2013; // commented out and not installed in example setup
  5. Modify other sections like [Setup] [Files] [Icons] as necessary.
  6. Build the setup using Inno Setup compiler.

Integration

You can also just include CodeDependencies.iss file into your setup and call the desired Dependency_Add functions (some may need defining their exe file path before the include):

Pascal
#define public Dependency_Path_NetCoreCheck "dependencies\"

#include "CodeDependencies.iss"

[Setup]
; ...

[Code]
function InitializeSetup: Boolean;
begin
  // add the dependencies you need
  Dependency_AddDotNet70;
  // ...

  Result := True;
end;

Details

You have two ways to distribute the dependency installers. By default, most dependencies will be downloaded from the official website. Another way is to pack the dependency into a single executable setup like so:

  • Include the dependency setup file by defining the source:

    Pascal
    Source: "dxwebsetup.exe"; Flags: dontcopy noencryption
  • Call ExtractTemporaryFile() before the corresponding Dependency_Add function:

    Pascal
    ExtractTemporaryFile('dxwebsetup.exe');

The dependencies are installed based on the system architecture. If you want to install 32-bit dependencies on a 64-bit system, you can force 32-bit mode like so:

Pascal
Dependency_ForceX86 := True;  // force 32-bit install of next dependencies
Dependency_AddVC2013;
Dependency_ForceX86 := False; // disable forced 32-bit install again

If you only deploy 32-bit binaries and dependencies, you can also instead just not define ArchitecturesInstallIn64BitMode in [Setup].

Dependencies

  • .NET
    • .NET Framework 3.5 Service Pack 1
    • .NET Framework 4.0
    • .NET Framework 4.5.2
    • .NET Framework 4.6.2
    • .NET Framework 4.7.2
    • .NET Framework 4.8.1
    • .NET Core 3.1 (Runtime, ASP.NET, Desktop)
    • .NET 5.0 (Runtime, ASP.NET, Desktop)
    • .NET 6.0 (Runtime, ASP.NET, Desktop)
    • .NET 7.0 (Runtime, ASP.NET, Desktop)
  • C++
    • Visual C++ 2005 Service Pack 1 Redistributable
    • Visual C++ 2008 Service Pack 1 Redistributable
    • Visual C++ 2010 Service Pack 1 Redistributable
    • Visual C++ 2012 Update 4 Redistributable
    • Visual C++ 2013 Update 5 Redistributable
    • Visual C++ 2015-2022 Redistributable
  • SQL
    • SQL Server 2008 R2 Service Pack 2 Express
    • SQL Server 2012 Service Pack 4 Express
    • SQL Server 2014 Service Pack 3 Express
    • SQL Server 2016 Service Pack 3 Express
    • SQL Server 2017 Express
    • SQL Server 2019 Express
    • SQL Server 2022 Express
  • Access
    • Access Database Engine 2010
    • Access Database Engine 2016
  • DirectX End-User Runtime
  • WebView2 Runtime

Credits

Thanks to the community for sharing many fixes and improvements. To contribute, please create a pull request.

This article was originally posted at https://github.com/DomGries/InnoDependencyInstaller

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Unknown
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Generalinstall .msi packages Pin
sascha_kib17-Mar-10 11:47
sascha_kib17-Mar-10 11:47 
QuestionScripts broken on 5.3.8(a)...? Pin
Member 47587007-Mar-10 3:09
Member 47587007-Mar-10 3:09 
AnswerRe: Scripts broken on 5.3.8(a)...? Pin
Member 47587007-Mar-10 4:02
Member 47587007-Mar-10 4:02 
GeneralRe: Scripts broken on 5.3.8(a)...? Pin
dany887-May-10 10:39
dany887-May-10 10:39 
GeneralRe: Scripts broken on 5.3.8(a)...? Pin
NoiadoX23-Nov-10 7:28
NoiadoX23-Nov-10 7:28 
AnswerRe: Scripts broken on 5.3.8(a)...? Pin
Member 267100017-Feb-11 17:56
Member 267100017-Feb-11 17:56 
GeneralRe: Scripts broken on 5.3.8(a)...? Pin
z.m.a.s.t.e.r12-Sep-11 7:24
z.m.a.s.t.e.r12-Sep-11 7:24 
QuestionAdditional runtimes? (MSVC 7-9, VBRUN*, ...) Pin
runeb22-Feb-10 1:37
runeb22-Feb-10 1:37 
Hi!

This is the best and easiest to use solution I found on the net to install dependencies...

However, at least for completeness, it would be nice if other often used runimes would be added too.
(despite it would be easy to implement ourselves using the existing examples, except for the hassle to find the newest version at MS)
Of course in case of MSVC I might compile static to avoid having to run the MSVC++ installer, except if you include a third party binary dll or executable which requires these (not recommended by MS).

To check the existence of the runtime some recommend just to try to load the main DLL of the runtime in a try ... catch block.

With MSVC 6 one could still include the needed DLLs (and there is an example on the inno setup homepage),
but with managed code etc. in newer versions the only option seems to be to run the msvc_redist installer to install the runtime correctly.

Regards, Rune B.

P.S. how stable are the cryptic links at MS? Will they continue to exist?
Would it be an option to skip downloading if the download already lies next to the installer of the app?
If giving the app to someone on a share or media one could put the required runtimes right next to it.
(like the open source impementation "The Ur-Quan Masters" installer of "Star Control II" does for it's addons,
this would give the user the advantage of the silent install even if not havining the app's installer do the download itself.)
GeneralDependenciesDir is not working Pin
ro.ka17-Feb-10 4:47
ro.ka17-Feb-10 4:47 
GeneralRe: DependenciesDir is not working Pin
ek4yasu20-Feb-10 14:49
ek4yasu20-Feb-10 14:49 
GeneralSetup for 32 and 64 bit Pin
john56322-Feb-10 20:02
john56322-Feb-10 20:02 
QuestionMSI 4.5 ? Pin
sikola2-Feb-10 5:16
sikola2-Feb-10 5:16 
GeneralBug in installing kb835732 on win2000 Pin
zxpmyth26-Jan-10 19:19
zxpmyth26-Jan-10 19:19 
GeneralRe: Bug in installing kb835732 on win2000 Pin
ek4yasu20-Feb-10 22:45
ek4yasu20-Feb-10 22:45 
GeneralInnoseup problem Pin
tommy098765432115-Jan-10 21:29
tommy098765432115-Jan-10 21:29 
GeneralCode added, bug corrected Pin
Vincent DUVERNET (Nolmë Informatique)14-Jan-10 23:22
Vincent DUVERNET (Nolmë Informatique)14-Jan-10 23:22 
GeneralRe: Code added, bug corrected [modified] Pin
Vincent DUVERNET (Nolmë Informatique)15-Jan-10 0:30
Vincent DUVERNET (Nolmë Informatique)15-Jan-10 0:30 
Generalisxdl.dll fails to be loaded on win98 starting at least from ISTool 5.3.0 Pin
AceAce8-Jan-10 4:21
AceAce8-Jan-10 4:21 
GeneralRe: isxdl.dll fails to be loaded on win98 starting at least from ISTool 5.3.0 Pin
ek4yasu20-Feb-10 22:58
ek4yasu20-Feb-10 22:58 
GeneralRe: isxdl.dll fails to be loaded on win98 starting at least from ISTool 5.3.0 Pin
Peter Lee7-Feb-11 13:19
Peter Lee7-Feb-11 13:19 
GeneralExcellent! Pin
Ondra Spilka18-Dec-09 2:10
professionalOndra Spilka18-Dec-09 2:10 
GeneralVersion Comparison Pin
Loki Man1-Dec-09 1:47
Loki Man1-Dec-09 1:47 
GeneralMessage Closed Pin
1-Dec-09 4:24
DomGries1-Dec-09 4:24 
GeneralRe: Version Comparison Pin
runeb24-Mar-10 12:01
runeb24-Mar-10 12:01 
GeneralBug with kb835732 on Windows XP Prof Pin
Batzen5-Nov-09 16:22
Batzen5-Nov-09 16:22 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.