installshieldinstallshield-2018installshield-express

InstallShield "Full" Redistributable forces internet access


I used Flexera's InstallShield Express to bundle my software into a Setup.exe file. I included .NET Framework 4.7.1 redistributable (2. Specify Application Data > 'Microsoft .NET Framework 4.7.1 Full' is checked and highlighted in middle panel, and says 'installed locally' > 'Install before feature selection' is checked on bottom panel).

I went onto my fresh installed Windows 7 computer with no internet access and attempted the install. It gave me the error:

"An error occurred while downloading the file http://saturn.installshield.com/is/prerequisites/Microsoft.NET Framework 4.7.1 Full.prq"

I then connected to the internet, and it was able to go through. I looked for a text of the prq. There may be a way to find it thru InstallShield, but I found a forum post from community.flexerasoftware.com asking about 4.7.2.

The two parts of interest are:

<file LocalFile="&lt;ISProductFolder&gt;
\SetupPrerequisites\Microsoft .net\4.7.1\Full\NDP472-KB4054530-x86-x64-AllOS-ENU.exe" 
URL="https://download.microsoft.com/download
/6/E/4/6E48E8AB-DC00-419E-9704-06DD46E5F81D/NDP472-KB4054530-x86-x64-AllOS-ENU.exe"
FileSize="0,0"/>

and

<properties Id="{BFF4A593-74C5-482F-9771-7495035EBBB0}" 
Description="This prerequisite installs the .NET Framework 4.7.2 Full standalone package." 
AltPrqURL="http://saturn.installshield.com/is/prerequisites
/Microsoft .NET Framework 4.7.2 Full.prq"/>

The fact that the file reads '4.7.1' is another can of worms I need to explore (not in the scope of this question). I'm assuming all prq files have a common structure. I believe that this information tells me the URL (download.microsoft.com) was skipped and the AltPrqUril (saturn.installshield.com) was used during my install. But even if the URL were not skipped, it would still looking at a page on the world wide web.

Question

Why do I need internet connection? The 'Full' version is specifically different from the 'Web' version in that you do not have to connect to the internet to install it.


Solution

  • Avoiding Internet Connection Requirement

    To embed runtimes in the setup.exe and hence avoid the need for an Internet connection, you can try to set the option "Extract prerequisites from setup.exe" in the setup.exe tab in the Release view as illustrated in the second screenshot below.

    Then you select the "Full" .NET Framework version in the Prerequisites View. Not 100% sure what features the Installshield Express version has vs the full versions. The below is from the Premier version.

    You can check your finished bundle, by doing a "setup.exe /a" - from a command prompt - on the final setup.exe and extract the files to see what is really included in the bundle.


    Quick Reminder

    I think you should generally call Installshield support if you have a support agreement, or check their own community at: https://community.flexerasoftware.com.

    Just mentioning this since people sometimes forget to check whether they have support agreements and support & community might resolve your problems in 5 minutes - if you don't get answers here.

    Release Wizard

    However, just shooting from the hip I would propose that the cause could be this setting that is available in the Release Wizard in the regular version of Installshield 2018. It is probably similar in the Express edition:

    Release Wizard

    In the Release property pages, it seems this setting is under the Setup.exe tab and it is called "Installshield Prerequisites Location":

    [Release, Setup.exe Tab

    Prefer Download

    For what it is worth I really dislike old, outdated runtimes included in bloated setups. This has to do with my experience as a corporate deployment specialists where much of the day consisted of extracting outdated runtimes from vendor packages.

    I would always suggest you download very common runtimes from the web, or allow them to be installed via Windows Update. That includes basically all Microsoft runtimes.

    I only like to bundle runtimes if they are 1) Rare and special, 2) Stable and well tested, 3) Small and well-behaving. Even then I would prefer them downloaded and installed separately - to allow security fixes to be installed without rebuilding your whole setup - you just put up the new runtime version on your server (marketing will want a new build for physical release - that is just added risk if you ask me).

    War story: the SOAP merge module - back in the day - almost destroyed my package with global deployment scope. Deployment errors quadrupled. Prerequisites can really ruin your work, and you will face little understanding for the problem seen. Try to make it clear what breaks and why. And get rid of all prerequisites you can (pie-in-the-sky thinking, I know). Certain runtimes are unavoidable of course. I just ramble on :-).