Create a Bundle Package
Up to this point we have been creating separate packages for the components needed to run a LS Central POS with customizations. Now we would like to combine these packages into one setup, which is where a bundle package comes in. A bundle package should not install anything, but only have dependencies to the packages we want to include in a single installation and maybe pre-set any parameters to simplify the setup.
Lets take a look at an example:
$ErrorActionPreference = 'stop'
Import-Module UpdateServiceServer
$SetupBundle = @{
    Id = "bundle/my-pos"
    Version = '1.0'
    Name = "My POS"
    Instance = $true
    Dependencies = @(
        @{Id = "sql-server-express"; Version = "-"}
        # The database package must be placed before bc-server package or his depentant.
        @{ Id = "my-database"; Version = '1.0' } 
        @{ Id = "my-dotnet-server-addin"; Version = ">=1.0" } 
        # Skip this package if you do not want the Windows Client:
        @{ Id = "my-dotnet-client-addin"; Version = ">=1.0" } 
        @{ Id = "my-objects"; Version = '1.0' }
        @{ Id = "my"; Version = '1.0' }
        # We always want the newest license:
        @{Id = "my-license"; Version = '!^' }
        @{Id = "ls-central-toolbox-server"; Version = ''}
        @{Id = "ls-central-toolbox-client"; Version = ''}
        # Skip this package if you do not want the Web Client
        @{ Id = "bc-web-client"; Version = '14.0' }
    )
    OutputDir = $OutputDir
}
New-UssPackage @SetupBundle | Import-UssPackage
This example creates a new package called bundle/my-app-pos where we have listed dependencies to packages we want to include on our POS installation.
Under the dependency section we have listed the packages
Now lets break it down:
- First we use the cmdlet New-UssPackageto create a new package, this package doesn't really install anything, except its dependencies, where we have picked packages we want to include in this setup.
- Next we create a new setup bundle with New-UssInstallerwhere we determine the name of the subscription and give it a unique identifier.
- Then, we attach the package to the setup bundle with Set-UssInstallerPackage.- Version: This can be a specific version or a version range.
- UpdateStrategy: You can specify if it should update automatically (- Automatic) or manually (- Manual)
- InstanceNameSuggestion: You can specify the default instance name - can be overwritten at install time.
 
- And last, we create an installer for the setup bundle with Get-UssInstaller.- Note: The installer only has a reference to the setup bundle, if you change the packages or their version in the bundle, the installer changes accordingly.