InstallShield StandAlone Build with Docker

InstallShield StandAlone Build with Docker

InstallShield StandAlone Build with Docker

Build your own Docker Image with InstallShield SAB 

  1. On a machine where Docker is installed, create Folder (eg: ISDockerBuild).
  2. Copy InstallShield SAB installer (eg: InstallShield2019R3StandaloneBuild.exe) to the above created folder (i.e ISDockerBuild).
  3. Create a file called DockerFile (no extension) inside the above created folder (i.e ISDockerBuild) with the following content or Download the same from here

[Dockerfile]

# Base Windows Image
FROM mcr.microsoft.com/windows:1809

# Change to Root Dir

WORKDIR /

# Copy InstallShield installer to root
ADD InstallShield2019R3StandaloneBuild.exe /

# InstallShield installation
RUN InstallShield2019R3StandaloneBuild.exe /s /v"INSTALLLEVEL=101 SABCONTAINER=1 /qn"

The final folder should look like this:

Pic1.png

 

 

  1. Launch CMD (Run As Administrator), and navigate to the above created folder (i.e ISDockerBuild)
  2. Run the following command to build the Docker image with InstallShield installed:
docker build -t installshield-sab-2019r3 --no-cache=true .
  1. Wait for the build to complete. Once the build is complete run the following command to list the newly created image
docker images

img.png

 

License InstallShield SAB 

Activate a Node Locked License

For activating SAB using a node locked license, you need to manually copy the license file (license.lic) to InstallShield [INSTALLDIR] location: usually C:\Program Files (x86)\InstallShield\<IS-VERSION>\System\

It is also mandatory to create the container with --mac-address option, else the MAC/Physical address will be dynamic each time you create a new container.

  1. Open the license file that you want to use for activating InstallShield SAB and copy the MAC address.

Pic3.png 

 

 

 

 

  1. Use the same/copied MAC/Physical address to create the container using --mac-address

docker run --mac-address <MAC-ADDRESS> <IMAGE> <CMD>

(Optional) In case if you want to create container, mount folder and assign MAC address at the same time run the following command:

docker run --mac-address <MAC-ADDRESS> -v "<HOST-DIR>:<CONTAINER-DIR>" <IMAGE> <CMD>

Where:
MAC-ADDRESS : is separated by colon( : ), eg: 00:16:7F:51:03:7D
HOST-DIR : folder present in Physical machine/VM
CONTAINER-DIR : folder inside the container;  if the folder does not exists it will be automatically create it.
  1. The container should be in Exited state in order to copy files to a container. Run the following command to Stop the container:
docker stop <CONTAINER-ID/CONTAINER-NAME>
  1. After the container is stopped, run the following command to copy the license file (i.e license.lic) to docker container.
"docker cp license.lic <CONTAINER-ID/CONTAINER-NAME>:C:\Program Files (x86)\InstallShield\<IS-VERSION>\System\"
  1. After the license file copy is done, run the following command to Restart the container:
docker start <CONTAINER-ID/CONTAINER-NAME>

 

Activate a Concurrent License

  1. Download ini from here.
  2. Open and edit ini with your concurrent server details.

If you are configured  with FlexNet License server , then specify the "Server" with the server IP and port information and remove the "CLSServer" from the server.ini file.

 Or

If you got Cloud License Server (CLS) ID from Revenera, then configure the "CLSServer" with the Cloud License Server (CLS) ID and  remove the "Server" from the server.ini file.

For FlexNet License server:
CC-SERVER - Concurrent Server
CC-PORT - Concurrent Server Port

For Cloud License Server:
CLSServer = XXXXXXXXXX - where XXXXXXXXX is the CLS Server ID you got from Revenera
  1. Copy ini to InstallShield [INSTALLDIR] location, Usually C:\Program Files (x86)\InstallShield\<IS-VERSION>\System\
  2. If the container is running, you need to stop the container. Run the following command to Stop the container:
docker stop <CONTAINER-ID/CONTAINER-NAME>
  1. After the container is stopped, run the following command to copy ini file to docker container.
docker cp server.ini <CONTAINER-ID/CONTAINER-NAME:C:\Program Files (x86)\InstallShield\<IS-VERSION>\System\
  1. After ini file copy is done successfully, run the following command to Restart the container:
docker start <CONTAINER-ID/CONTAINER-NAME>

 

Downloading a Docker image with pre-installed StandAlone Build

You can download a docker image with pre-installed InstallShield 2019 R3 StandAlone build.

 docker pull flexerasoftware/installshield:sab2019r3

Note: By choosing to download the above docker image, you agree to accept the terms and conditions outlined in our End User License Agreement available at https://www.flexera.com/legal/clickthrough

 

Building InstallShield projects via Docker Container

Considering that you already have a Docker image with InstallShield or you are using the Docker image provided by InstallShield.

  1. Run the following command to create a container and mount directory in an interactive process
docker run -it  -v "<HOST-DIR>:<CONTAINER-DIR>" <IMAGE> <CMD>

(Optional) In case if you want to create container, mount folder and assign MAC address at the same time run the following command:

docker run -it --mac-address <MAC-ADDRESS> -v "<HOST-DIR>:<CONTAINER-DIR>" <IMAGE> <CMD>

Where:
MAC-ADDRESS : is separated by colon( : ), eg: 00:16:7F:51:03:7D
HOST-DIR : folder present in Physical machine/VM
CONTAINER-DIR : folder inside the container;  if the folder does not exists it will be automatically create it.
  1. To license InstallShield SAB please refer here.
  2. Navigate to C:\Program Files (x86)\InstallShield\2019 SAB\System
  3. Run the following command to build your project:
IsCmdBld.exe -p "C:\InstallShield Projects\MyAppProject.ism"

 

Build Windows Server Core Docker Image with InstallShield SAB

InstallShield SAB setup can be installed on the Windows server core image, but we noticed that the InstallScript projects faili to build in the Windows server core image due to the missing Microsoft Windows library - Oledlg.dll. Server Core provides you with a minimal installation of Windows Server, with minimal features and supports only certain server roles. Oledlg.dll is not included with the Server core installation. Since InstallScript heavily relies on this library, building an InstallScript project fails with below error:

ISDEV : error -7041: Could not create instance of CABEngine, CABEngine component might not be installed or registered properly. You may need to reinstall InstallShield.

So, in order to build the InstallShield projects in the Server core image, copy the Oledlg.dll from a Windows Server full installation to the Windows Server Core, once after preparing the Windows server core image with InstallShield SAB setup as described in the starting of this article. Copy the 32 bit Oledlg.dll from a Windows Server full installation(from C:\Windows\SysWOW64 directory) to Windows server core (C:\Windows\SysWOW64) directory.

Reference : 

  1-  DLLs Included with Server Core

  2-  Microsoft TechNet Forum 

Apart from the OleDlg.dll copy, ensure to specify the Windows Server Core base image in the Docker file while creating the image as below:

[Dockerfile]

# Base Windows server core Image
FROM mcr.microsoft.com/windows/servercore:20H2

# Change to Root Dir

WORKDIR /

# Copy InstallShield installer to root
ADD InstallShield2019R3StandaloneBuild.exe /

# InstallShield installation
RUN InstallShield2019R3StandaloneBuild.exe /s /v"INSTALLLEVEL=101 SABCONTAINER=1 /qn"

 

Note: 

Please refer the following for addition details on the commands used:

docker build: https://docs.docker.com/engine/reference/commandline/build/

docker images: https://docs.docker.com/engine/reference/commandline/images/

docker start : https://docs.docker.com/engine/reference/commandline/start/

docker stop : https://docs.docker.com/engine/reference/commandline/stop/

docker cp: https://docs.docker.com/engine/reference/commandline/cp/

docker run: https://docs.docker.com/engine/reference/run/

Labels (1)
Was this article helpful? Yes No
No ratings
Comments

Hi,

I have two question here.

First can you provide an image with 

mcr.microsoft.com/windows/servercore:1809

 

Second, i dont think the the install shield installation is working. 

running IsCmdBld.exe inside the container does not generate any output.

however when i run the IsCmdBld.exe on my computer i get 

InstallShield (R)
Release Builder
Copyright (C) 2019 Flexera Software, Inc.
and/or InstallShield Co. Inc.
All Rights Reserved.

---COMMAND LINE OPTIONS---

--REQUIRED--

-p <file name> project file name

--OPTIONAL--

-r <release name> name of the release
-b <build location> full path to the output folders and files
-s silent build
-i <.ini file path> full path to an .ini file
-u upgrade only
-x stop at first error
-w treat warnings as errors
-l <Path Variable>="New Path" override path variable location
-v enable verbose mode
-n don't compile setup.rul
-q2 WINDOWS INSTALLER PROJECTS: build tables and refresh files
PROFESSIONAL PROJECTS: rebuild only changes since the last build
-q3 only compile setup.rul
-d <Name>=<Value> provide a preprocessor definition
-o merge module search path
-prqpath InstallSheild Prerequisite search path

--WINDOWS INSTALLER PROJECTS--

-a <product configuration> name of the product configuration
-c <release configuration>
COMP = Files compressed into .msi file;
UNCOMP = Files remain uncompressed
-f <release flags>
-e <Y/N> include Setup.exe in the build
-y <Product Version> version number in the format xx.xx.xxxxx
-m <CUB file> name of the CUB file to use to validate the package
-q1 build tables only
-t Microsoft(R) .NET Framework path
-h skip upgrade validators
-g minimum target MSI version
-j minimum target Microsoft(R) .NET Framework version
-z <Property=Value> set Property to Value in built MSI

--WINDOWS INSTALLER PATCHES--

-patch_config <patch configuration> patch configuration name

For more information on command-line parameters, please see the Help Library.

 

which tells me the on inside the container is not responding

@adiallo ,did you get this working?The above mentioned errors clearly indicate that there is some command line syntax error.Sample command line would be:

IsCmdBld.exe -p "C:\InstallShield Projects\MyAppProject.ism" -r <Release_Name> -a <ProductConfig> 

 

Version history
Revision #:
31 of 31
Last update:
‎Sep 09, 2021 01:19 PM
Updated by: