@@ -33,6 +33,7 @@ internal class AppInstallerUpdateHandler
3333 public bool WaitForUpdateSearchToFinish = true ;
3434 public bool mandatoryInstallationFailure = false ;
3535 private bool restartOnMandatoryUpdate = true ;
36+ private bool treatAvailableUpdateAsMandatory = false ;
3637 public bool hasMandatoryUpdates { get ; set ; }
3738 public Uri AppInstallerUri { get ; set ; }
3839
@@ -95,6 +96,11 @@ public void processXml(XmlReader reader)
9596 if ( reader . Value . Equals ( "false" ) )
9697 restartOnMandatoryUpdate = false ;
9798 break ;
99+ case "TreatAvailableUpdateAsMandatory" :
100+ reader . Read ( ) ;
101+ if ( reader . Value . Equals ( "true" ) )
102+ treatAvailableUpdateAsMandatory = true ;
103+ break ;
98104 case "AppInstallerUri" :
99105 reader . Read ( ) ;
100106 AppInstallerUri = new Uri ( reader . Value ) ;
@@ -203,14 +209,21 @@ public async void InstallOnStart()
203209 IAsyncOperation < PackageUpdateAvailabilityResult > searchOperation = package . CheckUpdateAvailabilityAsync ( ) ;
204210
205211 searchOperation . AsTask ( ) . Wait ( ) ;
206-
212+
207213 updateresult = await searchOperation . AsTask ( ) ;
208-
209214 switch ( updateresult . Availability )
210215 {
211216 case PackageUpdateAvailability . Available :
212217 myLogWriter . LogWrite ( "Found available updates." ) ;
213- hasMandatoryUpdates = true ;
218+ if ( treatAvailableUpdateAsMandatory )
219+ {
220+ hasMandatoryUpdates = true ;
221+ myLogWriter . LogWrite ( "treatAvailableUpdateAsMandatory is set. Will treat available update as mandatory." ) ;
222+ } else
223+ {
224+ installOnExit = true ;
225+ myLogWriter . LogWrite ( "treatAvailableUpdateAsMandatory is not set. Will install update on exit." ) ;
226+ }
214227 break ;
215228 case PackageUpdateAvailability . Required :
216229 //Queue up the update and close the current instance
@@ -225,17 +238,10 @@ public async void InstallOnStart()
225238 case PackageUpdateAvailability . Unknown :
226239 default :
227240 // Log and ignore error.
228- myLogWriter . LogWrite ( "Failed to process updates." ) ;
241+ myLogWriter . LogWrite ( "Failed to process updates." , 3 ) ;
229242 break ;
230243 }
231244
232- //MessageBox.Show("Updates found", "Searching", MessageBoxButton.OK, MessageBoxImage.Information);
233-
234-
235-
236-
237-
238-
239245 executeUpdateProcedure = true ;
240246 if ( executeUpdateProcedure )
241247 {
@@ -286,12 +292,12 @@ public async void InstallOnStart()
286292 myLogWriter . LogWrite ( "Mandatory updates need to be installed and will now be enforced." ) ;
287293 UpdateHandlerWindow updateHandlerWindow = new UpdateHandlerWindow ( packageManager , AppInstallerUri , caption , message , captionFailRequired , messageFailRequired ) ;
288294 myLogWriter . LogWrite ( "Window has been initialized." ) ;
289- updateHandlerWindow . ShowDialog ( ) ;
290- myLogWriter . LogWrite ( "InstallUpdate has finished execution." ) ;
291- if ( ! updateHandlerWindow . failure )
292- {
295+ updateHandlerWindow . ShowDialog ( ) ;
293296
294297
298+ myLogWriter . LogWrite ( "InstallUpdate has finished execution." ) ;
299+ if ( ! updateHandlerWindow . failure )
300+ {
295301 myLogWriter . LogWrite ( "App has been scheduled for a restart." ) ;
296302 }
297303 // await InstallUpdate(updates);
@@ -350,13 +356,13 @@ private async Task InstallUpdate()
350356 myLogWriter . LogWrite ( "Status: " + installOperation . Status . ToString ( ) ) ;
351357 //updateHandlerForm.ShowDialog();
352358
353- myLogWriter . LogWrite ( "Showing Update Dialog" ) ;
359+
354360
355- installOperation . AsTask ( ) . Wait ( ) ;
361+
356362
357363 var installResult = await installOperation ;
358364 //updateHandlerForm.Close();
359- myLogWriter . LogWrite ( "Closed Update dialog " ) ;
365+ myLogWriter . LogWrite ( "Finished update " ) ;
360366 //StorePackageUpdateResult downloadResult =
361367 // await context.TrySilentDownloadAndInstallStorePackageUpdatesAsync(storePackageUpdates);
362368 bool success = true ;
0 commit comments