Advanced installation manual
This manual is intended to be used mainly by school IT administrators as it provides some tips on how to set up Corinth 3D in school environments (i.e. for multiple users and/or on multiple computers with an effortless activation and appropriate update policy). It also presents a working sample solution for Corinth 3D deployment, demonstrating how to use all the described features in practice (using PowerShell).
Related Windows features
Installation methods
There are various ways to install the Corinth3D app. You can find details about some of them below, which should help you choose the way that best suits your workflow and leverages the tools you are already familiar with.
Microsoft Store is the standard source of Universal Windows Platform (UWP) apps, such as Corinth 3D. Corinth 3D is available on Microsoft Store, as well as Microsoft Store for Education and Microsoft Store for Business.
You can get Corinth 3D from Microsoft Store with some limited content unlocked for free. If you wish to unlock more of its content, you need to purchase a license. After you have purchased a license, you will be given a License Key. You can unlock the content by entering your License Key within the app. Alternativelly, you can use the auto-activation feature, even though it's most convenient when coupled with Sideloading rather than installation from Microsoft Store.
If, for whichever reason, you prefer not to use Microsoft Store, you can still install Corinth3D without it. When you install a UWP app outside the Microsoft Store, you are Sideloading the app. The Corinth 3D app is ready to be Sideloaded, if that suits your needs. Installation package may come as a file with one of the following extentions: appx, appxbundle, msix or msixbundle. You will need the package for Corinth 3D to Sideload the app, along with the dependency packages. You can obtain the necessary packages if you have purchased a license.
You can Sideload the app just by clicking the installation package. This will open the App Installer tool which will guide you through the installation process.
App Installer itself is a UWP app, so if it is not already on your computer, you can get it from Microsoft Store. If you are not able or willing to do so, you can install the Corinth 3D app using PowerShell (see the sections below).
The app will be installed for the current user only and you will need to go through the configuration steps (such as App Data Sharing, activation and Update Strategy settings) by hand.
The Add-AppxPackage cmdlet can be used to add an app for the current user, along with all necessary dependency packages. It can also be used to update an already installed app, presuming that the Family Name of the existing app and the app being installed are the same.
Example (PowerShell):
Add-AppxPackage -Path ".\Corinth3D_Sideload_x64.appxbundle" -DependencyPath ".\Dependencies\x64\Microsoft.NET.Native.Framework.1.3.appx",".\Dependencies\x64\Microsoft.NET.Native.Runtime.1.4.appx",".\Microsoft.VCLibs.x64.14.00.appx"
Note: While using the Add-AppxPackage cmdlet, you need to install (add) the app for each user individually.
The Add-AppxPackage cmdlet can also be used to register the app for a current user, if the app has already been installed on the computer. No installation package is needed in this scenario.
Příklad (PowerShell):
Add-AppxPackage -RegisterByFamilyName -MainPackage "Corinth.Corinth3D_wv8kxjmt4maqr"
The Add-AppxProvisionedPackage cmdlet adds an app to a Windows image using the DISM (Deployment Image Servicing and Management) tool. The app is then added for every user on the machine, including those created in the future, just as the default Windows apps (e.g. Calculator, Calendar, Mail etc.) are added to them.
Note: You must specify the target Windows image. Typically, you want to affect the current (running) environment, which you can specify by the parameter -Online. Alternativelly, use the -Path parameter to specify the location of a different mounted Windows image.
Note: The cmdlet assumes you to provide an app license file. This is NOT the license input file to unlock the content of the Corinth 3D app (which you can provide to the app right after the installation to leverage the auto-activation feature). If you don't have one (which is probably the case while Sideloading the Corinth 3D app), you need to explicitly state to skip the license using the -SkipLicense switch.
Example (PowerShell):
Add-AppxProvisionedPackage -Online -PackagePath ".\Corint3D_Sideload_x64.appxbundle" -DependencyPackagePath ".\Dependencies\x64\Microsoft.NET.Native.Framework.1.3",".\Dependencies\x64\Microsoft.NET.Native.Runtime.1.4.appx",".\Microsoft.VCLibs.x64.14.00.appx" -SkipLicense
Note: It may take some time until the app is added for an additional user after they log in.
Note: When unistalling a provisioned app from the computer, you need to un-provision it first, and then remove it from all existing users.
If you want to use PowerShell to install the Corinth 3D app, it is convenient to create a PowerShell script rather than run the individual cmdlets. The script can not only install the app (using one of the cmdlets above), but also set up all the related or pre-requisitory settings.
Recommended steps for Corinth 3D app installation:
-
Enable Sideloading.
Example (Cmd/PowerShell):
REG ADD 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock' /t REG_DWORD /f /v 'AllowAllTrustedApps' /d '1'
sideloading_setup - Install the app (either adding it for a single user or provision for all user).
-
Enable Data Sharing (highly recommended).
Example (Cmd/PowerShell):
REG ADD 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\AppModel\StateManager' /t REG_DWORD /f /v 'AllowSharedLocalAppData' /d '1'
datasharing_setup - Provide License Input file for auto-activation (optional) - see below.
- Set an Update Strategy (optional) - see below.
- Check the result and log progress (optional).
Corinth Installation Script provides a working example of a PowerShell script which could be used to install the Corinth 3D app, demonstrating all of the above-mentioned steps in practice.
After you have finished the script, you can launch it manually or use a management tool to run it automatically upon a system event (such as system startup or user logon). See more in the Mass deployment section.License activation
You can get the Corinth 3D app with some limited content for free. However, you have to purchase a license to unlock more of its content. Additional sections of the app's content are unlocked after the license is activated.
It takes one license per computer regardless of the number of users using the app on that particular computer. If you have Data Sharing enabled, you only have to enter the code once and the content is made available to all users on the machine.
Other than inserting the License Key manually, the app may be provided with a License Input file to automatically unlock the content during the next launch, without the need to specify the license key manually. It is particularly convenient if you are mass-deploying the app, for example Sideloading it using a script, as shown by the Corinth Installation Script sample.
The app will be expecting the License Input file (named license_input
, without any extension) in one of the following locations (be aware that there are some caveats to each of them):
-
Local app data folder:
%LOCALAPPDATA&\Packages\Corinth.Corinth3D_wv8kxjmt4maqr\LocalState
Warning: The local app data folder is not shared between users. Each user has their own which is not accessible by other users. This means that in order to activate the license and unlock the content, the app must be launched by the user in whose local app data folder the License Input file is present.
-
Shared app data folder:
%PROGRAMDATA%\Microsoft\Windows\AppRepository\Families\Corinth.Corinth3D_wv8kxjmt4maqr\SharedLocal
Warning: App Data Sharing needs to be enabled for the app to use the shared folder. Furthermore, the shared folder is created during the first launch of the app and is not available until then. It is, however, shared which means that the license will be activated regardless of the user who launches the app.
-
App installation folder
Warning: The app installation folder is both shared and available right after installing the app, however, it is typically set as read-only to majority of users including administrators. The License Input must therefore be included inside the installation package or you have to use system privileges to copy the License Input file to the installation folder.
Updates
If you have installed the app from the Microsoft Store, updates are handled automatically. If, however, you have Sideloaded it, the app allows you to set the way it behaves when handling updates.
There are 3 Update Strategies to choose from - select one depending on who should typically be the person to initialize an upgrade of the app:
User
: When the app detects an update, it prompts the user who can then update the app by clicking a button. The user has control over the moment the app updates, so that the app doesn't update at an inappropriate time. Only if the app is still not updated weeks after the initial prompt, the update is forced.Admin
: When an update is rolled out, an email is sent to the admin to update the app and there is no prompt to the user. The admin should then perform a manual update or deploy a new version of the app at the earliest appropriate moment. The motivation behind this to give the admin control over the state of the machine, so that the users don't change it behind his back. Only if the app is not updated within longer period of time since the update was detected, it shows a prompt to users instructing them to tell the admin to update the app. If the app is still not updated weeks after the initial prompt, the update is forced.Force
: The update is carried out automatically without prompting anyone. This might be useful if you wish not to bother with the updates at all, but it gives you no control over the time of the update.
<?xml version="1.0"?>
<UpdateSettings>
<Strategy>Admin</Strategy> <!-- User, Admin or Force -->
</UpdateSettings>
Note: You can use "User" or "Force" strategy instead of "Admin" which is used in the example above.
Note: If you provide no Update Strategy, the "User" Update Strategy will be used as default.
You then need to place the file into one of the app data folder (mind their respective limitations):
-
Local app data folder:
%LOCALAPPDATA&\Packages\Corinth.Corinth3D_wv8kxjmt4maqr\LocalState
Warning: The local app data folder is not shared between users. Each user has their own which is not accessible by other users and the app is using it only when it runs under that particular user. This means that if you place the file specifying an Update Strategy to a user's app data folder, the settings will only be applied for that particular user.
-
Shared app data folder:
%PROGRAMDATA%\Microsoft\Windows\AppRepository\Families\Corinth.Corinth3D_wv8kxjmt4maqr\SharedLocal
Warning: App Data Sharing needs to be enabled for the app to use the shared folder. Furthermore, the shared folder is created during the first launch of the app and is not available until then. It is, however, shared which means that the settings will be the same for all users, if you choose to put the file there.
-
App installation folder
Warning: The app installation folder is both shared and available right after installing the app, however, it is typically set as read-only to majority of users including administrators. The settings file specifying the Update Strategy must therefore be included inside the installation package or you have to use system privileges to create that file in the installation folder.
Note: If you create multiple files containing different settings in a combination of the above-mentioned locations, the app will use the one in the Local folder, then (if there is none in the Local folder) the one in the Shared folder, and then (if there is none in the Local of Shared folder) the one in the Installation folder. This allow you to override the global built-in settings in the Installation folder by providing a file in the Shared folder, and even to create exceptions for some user by special settings files in their Local folders.
Mass deployment
You may find yourself needing to deploy the Corinth 3D app to many computers at once, such as to a school computer lab or multiple computers in different classrooms. Due to the fact that Corinth 3D is a Universal Windows Platform (UWP) app, you might not be able to use the tools that you are used to work with when installing Desktop Applications (e.g. from an .msi or .exe file). However, there are still multiple ways to tackle this problem, which might save your time. Which of them is the best one for you depends mainly on the software tools available to you. You can find some inspiration below.
Warning: If you choose to use the License Input file (see the section about automatic activation), the license is activated during the next launch of the app, and the activation is valid for one particular computer only (it will not be valid if you transfer it to another machine). Therefore, if you wish to use this activation feature while distributing the app to multiple computers using disk imaging or cloning, you should place the License Input file to the application data folder as part of the installation process (as shown by the Corinth Installation Script sample) on the "template" computer, but not launching the app until the disk image is created. If you use a disk image containing an installation of Corinth 3D which has already been activated on another computer, you will need to re-activate the app on the target machine, e.g. by manually inserting your License Key within the app.
Tip: It is recommended to place all the necessary files (the installation script, application package, dependencies, optionally the License Input file etc.) to a shared network storage accessible from the respective computers. That way you don't have to copy all the files to the individual computers. You can prepare a single PowerShell command to run the script, and then just connect to the computers one by one, simply opening a PowerShell window, pasting the prepared command and running it. See more about running a PowerShell script manually in the following section.
Example (PowerShell):
.\Install-CorinthAppPackage.ps1 -PackagePath ".\Corinth3D_Sideload_x64.appx" -LicensePath ".\license_input" -UpdateStrategy "Admin" -Verbose
Set-ExecutionPolicy
command, specifying the new execution policy and the scope to which it should be applied. Use the parameter -Scope Process
to apply the Execution Policy to the current PowerShell session only.
Example (PowerShell):
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Example (PowerShell):
PowerShell.exe -ExecutionPolicy Bypass -NoProfile -File .\Install-CorinthAppPackage.ps1 -PackagePath ".\Corinth3D_Sideload_x64.appx" -LicensePath ".\license_input" -UpdateStrategy "Admin" -Verbose
Remote PowerShell commands
You can run PowerShell commands remotely on multiple computers at once, including running scripts. The script only needs to be accessible from the local computer.
Example (PowerShell):
Invoke-Command -ComputerName TEST-PC1 TEST-PC2 -FilePath .\Install-CorinthAppPackage.ps1
Example (PowerShell):
$s = New-PSSession -ComputerName TEST-PC1 TEST-PC2
Invoke-Command -Session $s -FilePath .\Install-CorinthAppPackage.ps1
You can use a Scheduled Task to execute a PowerShell script. This way, the script may run with system privileges, which is useful for automating some of the installation steps, namely automatic activation and Update Strategy setup (as discussed above).
To set up a Scheduled Task on the local computer:
- Open the TS window. You can do this by opening the Start menu, typing TS and pressing Enter.
- Select an appropriate folder in the left-side panel of the TS window, or create a new one by selecting an existing folder, right-clicking it, selecting TS_NewFolderMore, typing a name for the new folder and clicking Gen_OK.
- Right-click the selected folder and click TS_CreateTaskMore. A TS_CreateTask window will be opened.
- In the TS_General tab of the TS_CreateTask window, fill out a name and a description of the new task.
- Then (still on the same tab) choose the user account to be used when running the task. For example, if the script needs to be executed with system privileges, click the TS_ChangeUserMore button, then in the TS_SelectUser window, click the TS_SelectUser window type "SYSTEM" and click TS_CheckNames button, then the Gen_OK button. Back in the TS_CreateTask window, check (enable) the TS_HighestPrivileges option.
- Select the TS_Triggers tab, then click on TS_NewMore. A TS_NewTriggerWin window will be opened.
- In the TS_NewTriggerWin window, specify when the task should be performed. You can for example select to run the script at startup in the TS_BeginTask dropdown by selecting TS_Startup. Confirm your choice by clicking Gen_OK.
- Select the TS_Actions tab, then click on TS_NewMore. A TS_NewActionWin window will be opened.
-
In the TS_NewActionWin window, make sure the TS_StartProg option is selected in the TS_Action dropdown. Then write "powershell.exe" into the TS_ProgramScript input. Then add the necessary arguments (particularly the path to the script itself) into the TS_AddArgs input. For example, if you are using the Corinth Installation Script located in
X:\Install\Scripts\
, the app package is inX:\Install\Packages\
and you wish to skip the automatic activation, then the arguments might look like this:-ExecutionPolicy Bypass -NoProfile -File 'X:\Install\Scripts\Install-CorinthAppPackage.ps1' -PackagePath 'X:\Install\Package\Corinth3D_Sideload_x64.appxbundle' -SkipLicense
. After you have set the arguments, click Gen_OK. - You can set additional options in the remaining tabs of the TS_CreateTask windows. After you have finished, click the Gen_OK button.
To set up installation via the AD GPO Startup Script, you should go through the following steps:
- Select a suitable existing GP_Obj (GPO) or create another one and set its contents and scope.
- Add a Startup Script to the GPO.
- Configure the script's parameters.
Note: The steps above assume that the script also enables Sideloading and Data Sharing. If it does not, these features should be enabled in advance.
To add a new GP_Obj (GPO):
- Log in on your AD_DomainController.
-
Open the GP_Mgmt tool on your AD_DomainController. You can do this for example from the AD_ServerManager window by clicking AD_SMTools and selecting GP_Mgmt, or from the Start menu by typing
gpmc.msc
and pressing Enter. - Find an AD_OrgUnit (OU) which you deem appropriate to be affected by the GPO or create a new one by right-clicking a domain and selecting AD_NewOrgUnit. You can set the contents of an AD_OrgUnit via the AD_UsersAndComps tool.
- Right-click the AD_OrgUnit and select AD_CreateGPOMore. Alternativelly, you can create a new GPO by right-clicking the AD_GPOs item in the domain and selecting Gen_New, but then you will have to link that GPO to an OU of your choice manually.
- Pick a suitable name for the new GPO and click Gen_OK.
- You can then specify the Groups to which that GPO should apply. Select the GPO, go to the AD_GPOScope tab in the right side of the window, then use the AD_GPOScopeSecFilter panel in the lower-right side of the window.
To add a PowerShell installation script to the Startup Scripts of a GPO:
-
Right-click the target GPO in the GP_Mgmt window and select Gen_EditMore. A AD_GPMgmtEdit window will be opened. Alternativelly, type
gpme.msc
in the Start menu and press Enter, then locate and open your target GPO. - In the AD_GPMgmtEdit, select GP_CompConfig -> GP_Policies -> GP_WinSettings -> GP_CompScripts, then double-click the GP_Startup item in the right side of the window. The GP_StartupProps windows will be opened.
- Select the GP_PSScripts tab.
- On the GP_PSScripts tab, click Gen_AddMore. On the GP_AddScript window click Gen_BrowseMore. An Win_Explorer window will be opened.
-
Copy all the necessary files to the directory opened by the previous step. For example, when using the Corinth Installation Script sample,
Install-CorinthAppPackage.ps1
,CCInstallUtils.psm1
andCCInstallUtils.psd1
must be placed there, and additional files might be also useful, such as thelicense_input
file. -
Select the installation script (a file with the
.ps1
extension) and click Gen_Open. The Win_Explorer window will be closed.
To set the parameters of the PowerShell Startup Script:
- You may need to provide the script with some parameters. This can be done in the GP_AddScript or GP_EditScript window, which was open in the previous steps or can be reached by selecting the script in the GP_PSScripts tab of the GP_Startup window, and clicking Gen_EditMore.
-
The particular parameters must be chosen according to the desired behaviour of the script and the script itself. For example, when using the Corinth Installation Script sample without any parameters, the script assumes that the installation package and the folder structure containing its dependencies are located in the same folder as the script itself. If the packages are elsewhere, you need to specify the correct location by using the
-PackagePath
parameter (see more about the sample script's parameters below). - Determine the correct parameters and write them to the GP_ScriptParams input of the GP_AddScript or GP_EditScript window.
- Click Gen_OK and then Gen_Apply on the GP_StartupProps window.
Note: If you have purchased Corinth 3D license for multiple computers, each computer counts just once, regardless of the number of users to whom it is available (installed/registered). The license is therefore not a factor when deciding whether to provision the app or not.
To set up installation via the AD GPO Logon Script, you should go through following steps:
- Enable Sideloading on all affected computers.
- Enable App Data Sharing on all affected computers.
- Select a suitable existing GP_Obj (GPO) or create another one and set its contents and scope.
- Add a Logon Script to the GPO.
- Configure the script's parameters.
Note: Sideloading and Data Sharing should be enabled outside of the Logon Script, because the script might not have the necessary privileges to do so running under a common user account. However, it is possible to set them up using a separate Startup Script or Registry modification within the same GPO.
To add a new GP_Obj (GPO):
- Log in on your AD_DomainController.
-
Open the GP_Mgmt tool on your AD_DomainController. You can do this for example from the AD_ServerManager window by clicking AD_SMTools and selecting GP_Mgmt, or from the Start menu by typing
gpmc.msc
and pressing Enter. - Find an AD_OrgUnit (OU) which you deem appropriate to be affected by the GPO or create a new one by right-clicking a domain and selecting AD_NewOrgUnit. You can set the contents of an AD_OrgUnit via the AD_UsersAndComps tool.
- Right-click the AD_OrgUnit and select AD_CreateGPOMore. Alternativelly, you can create a new GPO by right-clicking the AD_GPOs item in the domain and selecting Gen_New, but then you will have to link that GPO to an OU of your choice manually.
- Pick a suitable name for the new GPO and click Gen_OK.
- You can then specify the Groups to which that GPO should apply. Select the GPO, go to the AD_GPOScope tab in the right side of the window, then use the AD_GPOScopeSecFilter panel in the lower-right side of the window.
To add a PowerShell installation script to the Startup Scripts of a GPO:
-
Right-click the target GPO in the GP_Mgmt window and select Gen_EditMore. A AD_GPMgmtEdit window will be opened. Alternativelly, type
gpme.msc
in the Start menu and press Enter, then locate and open your target GPO. - In the AD_GPMgmtEdit, select GP_UserConfig -> GP_Policies -> GP_WinSettings -> GP_UserScripts, then double-click the GP_Logon item in the right side of the window.
- Select the GP_PSScripts tab.
- On the GP_PSScripts tab, click Gen_AddMore. On the GP_AddScript window click Gen_BrowseMore. An Win_Explorer window will be opened.
-
Copy all the necessary files to the directory opened by the previous step. For example, when using the Corinth Installation Script sample,
Install-CorinthAppPackage.ps1
,CCInstallUtils.psm1
andCCInstallUtils.psd1
must be placed there, and additional files might be also useful, such as thelicense_input
file. -
Select the installation script (a file with the
.ps1
extension) and click Gen_Open. The Win_Explorer window will be closed.
To set the parameters of the PowerShell Logon Script:
- You may need to provide the script with some parameters. This can be done in the GP_AddScript or GP_EditScript window, which was open in the previous steps or can be reached by selecting the script in the GP_PSScripts tab of the GP_Logon window, and clicking Gen_EditMore.
-
The particular parameters must be chosen according to the desired behaviour of the script and the script itself. For example, when using the Corinth Installation Script sample without any parameters, the script assumes that the installation package and the folder structure containing its dependencies are located in the same folder as the script itself. If the packages are elsewhere, you need to specify the correct location by using the
-PackagePath
parameter (see more about the sample script's parameters below). - Determine the correct parameters and write them to the GP_ScriptParams input of the GP_AddScript or GP_EditScript window.
- Click Gen_OK and then Gen_Apply on the GP_LogonProps window.
It is possible to divide the task and perform one part (e.g. global settings) with a Startup Script and a second part (e.g. adding the app to a user) with a Logon Script.
It may also be convenient to perform a crucial step by both Startup and Logon Scripts. For example, if you use a Stratup Script to enable the necessary features and to provision the app and you are not satisfied with the performance (the app is still unavailable for some users or it takes too long until it's added for them), even though the script runs successfully (the app is installed and there are no relevant errors in the EV), you may use and additional Logon Script to register the app for every user upon their logon.
Corint Installation Script sample
The Corinth Installation Script sample demonstrates some of the possibilities of a Universal Windows App (UWP) installation using PowerShell, that can be used for app deployment automation.
Warning: It is imperative that you familiarize yourself with the contents of the script and make sure that its execution is desirable for you before attempting to run it. Even then, you should first test it in a safe environment.
You are encouraged to modify the script to better fit your needs, or repurpose parts of it to create your own solution.
- relaunch itself to try to get administrative privileges (self elevation)
- enable Sideloading
- enable Data Sharing
- install an app
- insert a License Input file into the app data
- create a file for the Update Strategy settings
- log its progress (which can be inspected later using EV)
- send brief information about its launch, errors and progress (execution summary) which will be statistically processed and used to improve the future versions of the sample
Install-CorinthAppPackage.ps1
: the main script containing execution logicCC_InstallUtils.psm1
: PowerShell module providing auxiliary function for controlling the related Windows features, UWP app installation, system folder path extraction etc.; you may find these useful when creating your own solutionCC_InstallUtils.psd1
: module manifest containg some info about the module (notably its version)
Corinth\
├── Dependencies\
│ └── x64\
│ ├── Microsoft.NET.Native.Framework.1.3.appx
│ ├── Microsoft.NET.Native.Runtime.1.4.appx
│ └── Microsoft.VCLibs.x64.14.00.appx
├── Install-CorinthAppPackage.ps1
├── CCInstallUtils.psm1
├── CCInstallUtils.psd1
├── license_input
└── Corinth_Sideload_x64.appxbundle
You can specify different location of the files using parameters (see below).
-
String parameters:
-
PackagePath
- Meaning: Path to the installation package. Any depedency packages are expected to be inside a folder named "Dependencies\x64" right next to the package file.
- Default behaviour: The script will try to find a package within its folder (appx/msix/bundle right next to the script file) if no path specified.
- Failure action: If there is no package available on the specified path or if no path was specified and there is no single package in the default folder, the installation fails.
-
LicensePath
- Meaning: Path to a license file which should be used to activate the app and unlock its full content during its first launch.
- Default behaviour: Will try to use a file named "license_input" located next to this script if no path specified.
- Failure action: If there is no file available on the specified path or if no path was specified and there is no file on the default path, the script will fail. This bahaviour can be overridden by using the SkipLicense option (app will be installed but it won't be activated).
-
UpdateStrategy
- Meaning: Species the preferred way of user interaction when handling updates. See Update Strategy.
- Allowed values: User, Admin or Force.
- Default behaviour: No settings file will be created, the app will use its default settings (User).
- Failure action: If an invalid option is specified (i.e. other than the above-mentioned three), the script fails, just as with any other unrecognized parameter.
-
-
Switches:
-
InstallFromWeb
- Meaning: The script will download latest version of the installation packages from the internet and install them. Overrides PackagePath parameter.
- Default behaviour: See
PackagePath
parameter.
-
RegisterOnly
- Meaning: The script will only register the app for the current user. No further action will be taken, all other parameters (excluding
Verbose
,Help
,PrintLog
,PrintConfigReport
andWhatIf
) will be ignored. Presumes that the app is already installed on the computer. - Default behaviour: If the switch is not provided, the app will be installed and related steps will be performed.
- Meaning: The script will only register the app for the current user. No further action will be taken, all other parameters (excluding
-
SingleUser
- Meaning: Installs the app only for the executing user.
- Default behaviour: The app will be provisioned for all users on the computer if not otherwise specified.
-
ForceInstall
- Meaning: Will try to re-install the app even if it is already installed.
- Default behaviour: The installation (and all the related steps, such as certificate installation and Sideloading activation) will be skipped when there is any version of the app already available for current user.
-
SkipLicense
- Meaning: Will not provide any license input. The app can be activated later by this script or manually within the app by specifying the license code. The
LicensePath
parameter will be ignored. - Default behaviour: The script will try to copy a license input file (either from a location specified via parameter or from a default location next to this script) to the app data, so that it can be activated. It will throw an error, if the license input is unavailable.
- Meaning: Will not provide any license input. The app can be activated later by this script or manually within the app by specifying the license code. The
-
ForceLicense
- Meaning: Will copy the license input file to the app data even if the app had been previously activated. Overrides
SkipLicense
. - Default behaviour: If the script finds data suggesting that the app has been activated in the past, it will not try to provide the app with a license input file. This is to prevent the app from excessive number of attempt to activate itself - it tries to go through the activation process each time the license input changes..
- Meaning: Will copy the license input file to the app data even if the app had been previously activated. Overrides
-
Verbose
- Meaning: Enables console output. Useful when running the script manually.
- Default behaviour: Silent execution (except for the event logging and errors).
-
Help
- Meaning: Prints help similar to this description and exits.
-
PrintLog
- Meaning: Prints log and exits. The same records can be accessed through the EV.
-
PrintConfigReport
- Meaning: Prints configuration check report (i.e. Windows version, Sideloading settings, installed version of the app etc.) and exits.
-
WhatIf
- Meaning: Prints a summary of expected steps without actually executing them.
-
-
The script tries to insert the License Input file into the app Installation folder. If it's not able to do so, then it uses the Local app data folder, which belongs to the user running the script. System privileges are required to write to the Installation folder. Therefore, if the script runs without them, then the app must be launched by the user, who ran the installation script, in order for the license to be activated. The activation will not be performed if the app is launched by a different user, however, if Data Sharing is enabled, then the activation is also shared and other user on the same computer will find the content unlocked after the activation is completed.
-
The main goal of the script is to allow installation for multiple users on the same machine. Creating the settings file containing the preferred Update Strategy in a user's Local app data folder would result in applying this Strategy only to that particular user (see the related section), which could be cofusing. For that reason the app never creates the settings file in the Local folder; it uses only the Shared folder or the Installation folder. System privileges are required to write to the Installation folder, and the app must have been launched at least once before the Shared folder is created (while simutaneously the Data Sharing is enabled). This means that creating the settings file as part of the installation process while running the script manually will fail, even if it's launched with the administrative privileges, because the Shared folder will not be existing yet and the Installation folder will not be writable. If you wish to use the manually-executed script to provide the settings for Update Strategy, you need to launch the app at least once before doing so, while having the Data Sharing enabled. If you use the script as a Startup Script in a GPO, the settings file will be created successfully, because the script will have the necessary privileges.
- The script does not disable any Windows features which very enabled during its execution (Sideloading, Data Sharing).
The script logs its progress which can be later examined through the EV. You can use these records to verify the correct operation of the script or to track down an error. In the left side of the EV window, select EV_WindowsLogs -> EV_WinApplication and look for the events with the EV_Source of "Corinth Installation Script".
Every possible event has its unique number (EV_EventID). The numbers follow this system:
-
The first digit describes the type of the event:
-
1xxx
- OK - standard operation, information, success -
2xxx
- OK - skipped operations (e.g. already valid settings; possibly due to repeated execution of the script) -
3xxx
- warning -
4xxx
- error
-
-
The second digit reffers to the step of the script:
-
x0xx
- preparation phase (i.e. existing-installation check, parameter processing, event log creation, execution planning) -
x1xx
- self-elevation (relaunch), script privileges check, launch info logging -
x2xx
- installation packages acquisition (app + dependencies) -
x3xx
- certificate check -
x4xx
- Sideloading activation -
x5xx
- Data Sharing activation -
x6xx
- installation/provisioning/registration -
x7xx
- License Input and Update Strategy file placement -
x8xx
- cleanup -
x9xx
- execution summary
-
- The last two digits identify the substep (e.g. checks before, during and after the step) and variant (e.g. too few vs. too many files specified)