flowchart TD
%% start und select branch type
Start([Start:
Deploy-Application.ps1]) --> InitModule([load and unblock modules/
Restart-NXTDeployScript
for 32bit on 64bit /
Trigger])
InitModule --> InitSession([Initialize-ADTModule /
Open-ADTSession
&
loading the package configuration
neo42PackageConfig.json])
InitSession --> H1
H1[1:
CustomBegin] --> BranchType{deployment type?}
%% INSTALL / REPAIR BRANCH
BranchType -->|Install / Repair| H2
H2[2:
CustomInstallAndReinstallAndSoftMigrationBegin] --> Dependencies([management of explicitly defined package/application dependencies]) --> CheckSoftMigration{soft migration possible?}
Dependencies --> |controlled abort/
actions failed| FailureTasks
%% UNINSTALL BRANCH
BranchType -->|Uninstall| Uninst_AsKillProcesses([disturbing processes?
user request with a timeout])
Uninst_AsKillProcesses -->|resume processing no later than after the timeout!| H13
H14a[14a:
CustomUninstallEndOnError] ----> FailureTasks
H14[14:
CustomUninstallEnd] --> Uninst_SuccesTasks([conclusion & cleanup tasks /
unregistering]) --> H19
H13[13:
CustomUninstallBegin] --> Uninstallation([uninstallation task])
Uninstallation --> |error uninstallation| H14a
Uninstallation --> |success| H14
%% USER PART BRANCHES
BranchType -->|InstallUserPart / TriggerInstallUserPart| H15
H15[15:
CustomInstallUserPartBegin] --> |success| H16
H15[15:
CustomInstallUserPartBegin] ---> |error installation - UserPart| FailureTasks
H16[16:
CustomInstallUserPartEnd] --> |success| H19
H16[16:
CustomInstallUserPartEnd] ---> |error installation - UserPart| FailureTasks
BranchType -->|UninstallUserPart / TriggerUninstallUserPart| H17
H17[17:
CustomUninstallUserPartBegin] --> |success| H18
H17[17:
CustomUninstallUserPartBegin] ---> |error uninstallation - UserPart| FailureTasks
H18[18:
CustomUninstallUserPartEnd] --> |success| H19
H18[18:
CustomUninstallUserPartEnd] ---> |error uninstallation - UserPart| FailureTasks
%% soft migration path
CheckSoftMigration -->|yes| UnRegisterOldPackages(if necessary:
unregister of old/pre-packages) --> H3[3:
CustomSoftMigrationBegin] --> H4
UnRegisterOldPackages ---> |controlled abort/
actions failed| FailureTasks
%% default install / reinstall / upgrade path
CheckSoftMigration -->|no| CleanUpOldPackages(if necessary:
cleanup/unregister of old/pre-packages) --> Inst_AsKillProcesses{disturbing processes & defer?}
CleanUpOldPackages --> |controlled abort/
actions failed| FailureTasks
Inst_AsKillProcesses -->|processing continued| H5
H5[5:
CustomInstallAndReinstallPreInstallAndReinstall] --> CheckReinstall{installation
or
reinstallation?}
Inst_AsKillProcesses ---->|processing defered/
aborted| FailureTasks
%% reinstall path
CheckReinstall --> |reinstallation/upgrade| CheckProcessMode{Ausführungsmode?
einstufig / zweistufig}
CheckProcessMode --> |two-stage
reinstall/upgrade| H6
CheckProcessMode --> |one-stage
upgrade/install/repair| H8
H6[6:
CustomReinstallPreUninstall] --> UninstOnReinstallation([uninstallation task for reinstallation/upgrade])
UninstOnReinstallation -->|error in uninstallation task| H7a[7a:
CustomReinstallPostUninstallOnError] ----> FailureTasks
UninstOnReinstallation -->|success| H7[7:
CustomReinstallPostUninstall] --> H8
H8[8:
CustomReinstallPreInstall] --> InstOnReinstallation([installation task for reinstallation/upgrade])
InstOnReinstallation -->|error in installation task| H9a[9a:
CustomReinstallPostInstallOnError] ----> FailureTasks
InstOnReinstallation -->|success| H9[9:
CustomReinstallPostInstall] --> H12
H12[12:
CustomInstallAndReinstallEnd] ----> H4
H4[4:
CustomInstallAndReinstallAndSoftMigrationEnd] --> Inst_SuccessTasks
%% first installation / upgrade path
CheckReinstall --> |first installation| H10
H10[10:
CustomInstallBegin] --> Installation([installation task])
Installation -->|success| H11[11:
CustomInstallEnd] --> H12
Installation -->|error installation| H11a[11a:
CustomInstallEndOnError] ----> FailureTasks
%% exit path (error case)
ControlledExitOnError([general, controlled, erroneous script termination]) --> H20
FailureTasks([conclusion & cleanup tasks /
error registering]) ---> H20
H20[20:
CustomEndOnError] ---> ExitFail([exit error code])
%% exit path (success case)
ControlledExitOnSuccess([general, controlled, successful script termination]) --> H19
Inst_SuccessTasks([conclusion & cleanup tasks /
ActiveSetup /
registering]) --> H19
H19[19:
CustomEnd] --> ExitSuccess([exit 0 / 3010 reboot])