Pre-downloading packages before upgrading POS terminals with Update Service

Hi,

Although Update Service is not a topic we cover very often during our CAP (Cloud Accelerator Program) sessions with partners, we’ve recently been asked more than once about the time required to install or upgrade Offline POS using Update Service.

And this is not only about the time required for the actual upgrade, but also the time Update Service takes to download all the packages required for the installation.

This can be more challenging when the customer has a slow internet connection, or when there are many POS terminals that need to be upgraded.

One thing that some partners might not know is that the download of the packages and the actual installation/upgrade don’t need to happen at the same time.

It is possible to split the process into two separate steps:

  1. Download all the required packages to the POS;
  2. Later, run the installation or upgrade.

I have created a small PowerShell script, using standard Update Service commands, that can be used to perform the first step.

In this article, I will explain why this can be useful and how it can help in some installation and upgrade scenarios.

The challenge

When installing or upgrading an Offline POS, Update Service needs to make sure that all the packages required for the installation are first downloaded and available on the POS.

If the packages are not already available locally, Update Service needs to download them first.

Depending on the installation, this can include several packages, for example:

  • Business Central components;
  • Microsoft extensions, such as Base Application and System Application;
  • LS Central extensions;
  • Other extensions used by the solution;
  • Other components like Hardware Station for LS Central or AppShell.

For a new Offline POS installation, there might be additional dependencies that need to be downloaded, such as SQL Server Express.

Only after all the required packages are available locally, Update Service can continue with the installation or upgrade.

So, when running an installation or upgrade, we are actually doing two things: Download the required packages → Install/upgrade the POS

Most of the time this is not a problem but there are some scenarios where it can take some time.

Slow Internet connections

One example is a store with a slow or unstable Internet connection.

If several packages need to be downloaded, the download can take some time before the actual installation starts.

This means that part of the maintenance window is being used just to download files.

Many POS terminals

Another example is a customer with many POS terminals. Imagine that you need to upgrade 20, 50 or even more POS terminals.

If all these terminals need to download the required packages as part of the upgrade process, this can create additional network traffic and increase the time required to complete the upgrades.

Depending on the customer’s infrastructure and Internet connection, this might not be the best approach.

Note that even when downloading the packages in advance, it is still recommended to use the Deployment Circles and Schedules features available in Update Service. These features allow you to better control which POS terminals should be updated and when.

Splitting the process into two steps

What some partners might not know is that we can split these two operations.

Instead of downloading the packages during the installation, we can download them before.

This means that we can prepare the POS terminals before the actual maintenance window, for example, by downloading the required packages during the day, during the night, or at any other day when it is more convenient.

Then, when it is time to upgrade the POS, the required packages are already available locally.

Pre-downloading the packages using PowerShell

To make this easier, I created a PowerShell script using standard Update Service commands.

The Powershell script is available in my work Github account, in the following link: ricardomoinhos/usc-download-packages: Demonstration scripts showing how to pre-download Update Service (USC) packages and their dependencies, by installer or by package/bundle, so they can be installed later without hitting the network.

The purpose of the script is very simple: download all the packages required for a specific installation to the POS without performing the installation.

Currently the standard Update Service cmdlet being used – Get-UscPackageVersionFile – only allows us to download and extract the packages. Update Service first downloads the packages to its file caching folder, which by default is located at C:\ProgramData\LS Retail\GoCurrent\Client\FileStorage, and then extracts the package files to the folder specified in the OutputDir parameter. The OutputDir is only used as the destination folder for the extracted files and is not required or used later when running the actual installation or upgrade steps, and therefore can be deleted right away (maybe including the deletion in the Powershell script could also make sense).

This allows us to prepare the POS in advance.

Later, we can run the normal installation or upgrade process.

It doesn’t matter if the partner prefers to use the installer or a PowerShell script to perform the installation. The important part is that the packages are already available in the POS.

When Update Service checks the required dependencies, it will find that the packages have already been downloaded and can continue with the installation.

When can this be useful?

There are several scenarios where I think this approach can be useful.

Customers with slow Internet connections

The packages can be downloaded in advance, without using the installation window for this operation.

Customers with many POS terminals

The downloads can be planned and executed before starting the upgrades, instead of having all the work happening during the upgrade window.

Short maintenance windows

If you only have a limited amount of time to upgrade the POS terminals, it makes sense to have all the required packages already available. This way, the maintenance window is mainly used for the installation/upgrade itself.

New POS installations

A new installation can require more packages and dependencies than a normal upgrade. For example, if SQL Server Express is required, this also needs to be downloaded. Having everything available before starting the installation can help reduce the time required to complete the setup.

Final thoughts

This is a simple option available in Update Service, but one that can be useful in some customer environments.

Downloading the packages and installing them don’t always need to be part of the same operation.

By downloading the required packages in advance, we can prepare the POS terminals before the maintenance window and then perform the actual installation or upgrade when needed.

This can be especially useful when dealing with slow Internet connections, many POS terminals, or limited maintenance windows.

Give it a try and share your feedback. I hope you find it useful.

#LSCentral #updateservice #OfflinePOS #Onboarding #CAP #LSRetail

 

Share this

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.