| LEFT | RIGHT |
| (no file at all) | |
| 1 /** | 1 /** |
| 2 * \file close_application.cpp | 2 * \file close_application.cpp |
| 3 */ | 3 */ |
| 4 | 4 |
| 5 #include <algorithm> | 5 #include <algorithm> |
| 6 | 6 |
| 7 #include "session.h" | 7 #include "session.h" |
| 8 #include "property.h" | 8 #include "property.h" |
| 9 #include "database.h" | 9 #include "database.h" |
| 10 #include "process.h" | 10 #include "process.h" |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 */ | 199 */ |
| 200 /* | 200 /* |
| 201 * The UILevel property indicates whether we have the ability to put dialog
boxes up. | 201 * The UILevel property indicates whether we have the ability to put dialog
boxes up. |
| 202 * Levels 2 (silent) and 3 (basic) do not have this ability. | 202 * Levels 2 (silent) and 3 (basic) do not have this ability. |
| 203 * Levels 4 (reduced) and 5 (full) do. | 203 * Levels 4 (reduced) and 5 (full) do. |
| 204 * | 204 * |
| 205 * MSDN [UILevel property](http://msdn.microsoft.com/en-us/library/windows/d
esktop/aa372096%28v=vs.85%29.aspx) | 205 * MSDN [UILevel property](http://msdn.microsoft.com/en-us/library/windows/d
esktop/aa372096%28v=vs.85%29.aspx) |
| 206 */ | 206 */ |
| 207 std::wstring uilevel = Property( session, L"UILevel" ) ; | 207 std::wstring uilevel = Property( session, L"UILevel" ) ; |
| 208 bool interactive ; | 208 bool interactive ; |
| 209 if ( uilevel == L"5" || uilevel == L"4" ) | 209 if ( uilevel == L"5" || uilevel == L"4" || uilevel == L"3") |
| 210 { | 210 { |
| 211 interactive = true ; | 211 interactive = true ; |
| 212 // Assert state is one of { notKnown, allow, passive, active, automatic } | 212 // Assert state is one of { notKnown, allow, passive, active, automatic } |
| 213 } | 213 } |
| 214 else if ( uilevel == L"3" || uilevel == L"2" ) | 214 else if (uilevel == L"2") |
| 215 { | 215 { |
| 216 // Assert installer is running without user interaction. | 216 // Assert installer is running without user interaction. |
| 217 interactive = false ; | 217 interactive = false ; |
| 218 if ( state == notKnown ) | 218 if ( state == notKnown ) |
| 219 { | 219 { |
| 220 // Assert AVOIDREBOOT was not specified | 220 // Assert AVOIDREBOOT was not specified |
| 221 /* | 221 /* |
| 222 * This is where we specify default behavior for non-interactive operati
on. | 222 * This is where we specify default behavior for non-interactive operati
on. |
| 223 * The choice of "allow" makes it act like other installers, which is to
make no effort to avoid a reboot after installation. | 223 * The choice of "allow" makes it act like other installers, which is to
make no effort to avoid a reboot after installation. |
| 224 */ | 224 */ |
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 return ERROR_INSTALL_FAILURE ; | 441 return ERROR_INSTALL_FAILURE ; |
| 442 } | 442 } |
| 443 catch( ... ) | 443 catch( ... ) |
| 444 { | 444 { |
| 445 session.LogNoexcept( "terminated by unknown exception" ) ; | 445 session.LogNoexcept( "terminated by unknown exception" ) ; |
| 446 return ERROR_INSTALL_FAILURE ; | 446 return ERROR_INSTALL_FAILURE ; |
| 447 } | 447 } |
| 448 // Should be unreachable. | 448 // Should be unreachable. |
| 449 return ERROR_INSTALL_FAILURE ; | 449 return ERROR_INSTALL_FAILURE ; |
| 450 } | 450 } |
| LEFT | RIGHT |