Software Packages - Creating & Editing

How to work with Software Packages + Example of creating an .msi package. #MC-KB15

Written by Ines

Last published at: May 19th, 2021

Introduction


Software packages are deployed from the server to the client. They go through the Download process and then automatically onto the Installation process. If the package is configured to reboot upon installation, then it will perform the reboot as well. 


  • Download process can sometimes take a longer time depending on the size of the package.
  • It is recommended to work with package creation on the server because it will load the packages quicker into the server repository.


Location of packages


Server:


Typically when a package is created in the console, it is stored in the server's repository in this path:

C:\Program Files (x86)\ThinScale Management Server\PackageRepository

The package will carry the name of it's Package GUID:



To identify the package, you can locate it quickly in the console:



Client:


On the client the package will be downloaded to a temporary location for the purpose of installation:

C:\Program Files (x86)\SRW\Update6396\Packages

Once installed, the package is removed.


Getting Started


Application details


The most important step is to understand the application you're creating the package for. 

  • Where is the installation directory? %ProgramFiles%, %LocalAppData% , etc. This will determine the detection method (if the application is already installed on the client), and the method of installation (per user or regular computer installation). "Per user" installation is endemic to software like MS Teams, softphones, etc.
  • Is the installer in EXE or MSI format?MSI is a Windows installer package file format, and it typical uses a uniform set of arguments/parameters for installation for all applications in this format. To see which those are, simply call the Command Prompt and type:

              msiexec ?


EXEs are installation bundles containing one or more .msi files, along with other configuration items, images, etc. In order to discover the arguments for installation (for example /silent) you should search the developer's site as they usually provide these for system administrators. 

  • Are there any configuration files required additionally to make the application work on the client? For example: A VPN client may require a configuration file that points the VPN client to the VPN server so that the end-user does not have to add the server information or ports himself.


Creating a new package (example)


In this example we will be using Skype.msi installer.

If you have an application for which a developer offers an .msi installer, and if you do not require any specific additional configuration, it is the best way to go because of the nature of the .msi file format - all arguments are the same.

In this example we're creating the latest Skype package via .msi installer.

  1. Download the .msi installer (the link will automatically download the latest version: http://www.skype.com/go/getskype-msi and place it somewhere on the server. The initial download folder is irrelevant as once the package is created, it will be located in the server repository.
  2.  Acquire the basic application details. Unless you already know or have researched the basic application details, you can discover it all by simply installing the application in a test environment. Run the installation on a test VM and find the installation directory. With this we've discovered the following:
    • Installation directory is: C:\Program Files (x86)\Microsoft\Skype for Desktop or shorter: %ProgramFilesx86%\Microsoft\Skype for Desktop
    • The installation is not Per User installed (due to it not being installed in the App Data folder
  3.  Start creating the package in the Thinscale Management Console by clicking the "Package Creator" icon on the ribbon bar: 



Package Creator



1. The fields in the blue box are details about the package. You can name this however you want. For this example let's put in the obvious:



2. The checkboxes in the red box are going to be left unchecked because we don't need to reboot Windows after the installation has completed, and this is not a Per-User installation.

3. The field in the green box should contain the installer .msi for this example. If you have an application with accompanying configuration files or images, this is where you will load them. So, right-click inside the field and choose Add. Browse to the folder where you downloaded the installer .msi package and upload it. 



4. The fields in the yellow box represent the detection method and are not mandatory, but if you leave them empty then the package will install every time the Secure Remote Worker or Thinkiosk UI is launched. In this example, the Pre-Install Test will be the location of an existing Skype installation. This can be a registry key or a file. The simplest way is to go with a file. Right-click the field and choose Add.

  • Display Name is the name of what we're looking for. We will not only be looking for the presence of Skype.exe file, but also its version. So we'll call this field "Version".
  • Configure the Test Type like so, and then click Add:



  • The Pre-Install Condition will be the detection method itself. We've just told the software package to look for Skype.exe file and its file version. Now we need to tell it what to do with it. This field is semi-automated and it offers commands for convenience. So you will see the name of your Pre-install Test in the left box as [Version].



  • If you click Insert button, this will make the variable appear on the right side, and then it will offer you the rest of the command.



  • The expressions are self-explanatory (is, is greater than, is greater than or equal,...). Logically, we want the package to install if the Skype.exe is missing or if the version is lower than the one currently installed on the client. So choose the fourth option from the left box.
  • Another field will appear now, where we should write the version number of the software we're installing. Click Update to insert the value in the field above.



  • Our detection method is done (green means it's valid, red that you've made a mistake) even though the left field is offering you to continue the detection method expression. You would use this if you have multiple conditions only.



For example, if you are installing a software and copying a file into a directory. You would use the && expression.

5. The Install Script field in the magenta box is where the actual installation command will be written. For .msi, the simplest one that works is the following:


On Error Resume Next

Set objShell = CreateObject("WScript.Shell")

objShell.Run "msiexec.exe /i *.msi", 0, True

WScript.Quit()


Replace the Asterisk (*) with the full msi title from the "Install Files" field.

  • Because we want this particular software package to be installed silently, or in other words we don't want our end-user to see or interact with the installation window, we will be adding the /qn argument after the .msi, which stands for "quiet" and "No UI". So our script will look like this:



6. We can save our package now by using the Save As.. button on top (orange box).

Exit the package creator and the sequence will ask you if you want to load the new package into your console. The purpose for this is historical backtracking. You can create multiple packages of the same software and delete the ones that don't work later.

Our package is now done and loaded into the console.



Testing the software package


The Console


Just creating the software package is not enough, because even if the software installs successfully, it will still not appear in the Application dashboard unless you make it available in the profile under the Local Applications.

Remember the detection method? We used the Skype.exe file to detect if it's installed or not in the client. Use the same path for adding the Local Application. So you should have something like this:



Last step is to assign the Software Package to the Device Folder of the devices which need to have Skype deployed. Click the Device Folder, on the right-side pane choose Software Packages tab and click the Assign button to add our new package.



The Client


Launch your SRW or ThinKiosk test machine/VM. In this example I will be using one with SRW. If the package is created correctly, you will be able to see the installation popup window (depending on your software installation settings in the profile) as soon as the machine service of SRW detects new Software Packages assigned to the Device Folder.



If we hit Start installation, we will see the Download and Install progress of the package:



Once SRW starts, since we added the shortcut to Skype.exe under Local Applications, we can now see it under the Application Dashboard:



Always make sure the application is running afterwards: