Skip to content

Commit

Permalink
Patched critical design detail in installer - custom command line arg…
Browse files Browse the repository at this point in the history
…uments, intended to be volatile are no longer persisted and flow from the installer to the maintenance tool implicitly. Notably, auto pilot mode is not automatically applied in the uninstaller from a silent installer origin.
  • Loading branch information
BuvinJ committed Dec 3, 2020
1 parent 281d971 commit e288c36
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 15 deletions.
92 changes: 79 additions & 13 deletions distbuilder/qt_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -766,6 +766,26 @@ class _QtIfwScript:
MAINTAIN_MODE_OPT_UPDATE = "update"
MAINTAIN_MODE_OPT_REMOVE_ALL = "removeall"

_IS_CMD_ARGS_TEMP_KEY = "__tmp_sv"
_CMD_ARGS_TEMP_PREFIX = "__tmp_"
_CMD_ARGS = {
ERR_LOG_PATH_CMD_ARG : ERR_LOG_DEFAULT_PATH
, OUT_LOG_PATH_CMD_ARG : OUT_LOG_DEFAULT_PATH
, TARGET_DIR_CMD_ARG : ""
, START_MENU_DIR_CMD_ARG : ""
, ACCEPT_EULA_CMD_ARG : ""
, INSTALL_LIST_CMD_ARG : ""
, INCLUDE_LIST_CMD_ARG : ""
, EXCLUDE_LIST_CMD_ARG : ""
, RUN_PROGRAM_CMD_ARG : ""
, REBOOT_CMD_ARG : ""
, AUTO_PILOT_CMD_ARG : ""
, TARGET_EXISTS_OPT_CMD_ARG : ""
, MAINTAIN_MODE_CMD_ARG : ""
, _KEEP_ALIVE_PATH_CMD_ARG : ""
, _KEEP_TEMP_SWITCH : ""
}

_GUI_OBJ = "gui"
_INSTALLER_OBJ = "installer"

Expand Down Expand Up @@ -1200,6 +1220,17 @@ def cmdLineListArg( arg, default=None ):
return _QtIfwScript.lookupValueList(
arg, default, delimiter="," )

@staticmethod
def isInstalling( isNegated=False ):
return '( %s%s )' % ( "!" if isNegated else "",
_QtIfwScript.__IS_INSTALLER )
@staticmethod
def ifInstalling( isNegated=False, isMultiLine=False ):
return 'if( %s%s )%s\n%s' % (
"!" if isNegated else "",
_QtIfwScript.__IS_INSTALLER,
("{" if isMultiLine else ""), (2*_QtIfwScript.TAB) )

@staticmethod
def isMaintenanceTool( isNegated=False ):
return '( %s%s )' % ( "!" if isNegated else "",
Expand All @@ -1212,21 +1243,25 @@ def ifMaintenanceTool( isNegated=False, isMultiLine=False ):
_QtIfwScript.__IS_MAINTENANCE_TOOL,
("{" if isMultiLine else ""), (2*_QtIfwScript.TAB) )

@staticmethod
def ifInstalling( isMultiLine=False ):
return 'if( %s )%s\n%s' % (
_QtIfwScript.__IS_INSTALLER,
("{" if isMultiLine else ""), (2*_QtIfwScript.TAB) )

@staticmethod
def isAutoPilot( isNegated=False ):
return _QtIfwScript.lookupBoolValue( _QtIfwScript.AUTO_PILOT_CMD_ARG,
isNegated=isNegated )

return '( %s%s )' % ( "!" if isNegated else "",
_QtIfwScript.orList([
_QtIfwScript.cmdLineSwitchArg(
_QtIfwScript.AUTO_PILOT_CMD_ARG ),
_QtIfwScript.andList([
_QtIfwScript.isInstalling(),
_QtIfwScript.cmdLineSwitchArg(
_QtIfwScript._CMD_ARGS_TEMP_PREFIX +
_QtIfwScript.AUTO_PILOT_CMD_ARG )
])
])
)

@staticmethod
def ifAutoPilot( isNegated=False, isMultiLine=False ):
return _QtIfwScript.ifCmdLineSwitch( _QtIfwScript.AUTO_PILOT_CMD_ARG,
isNegated=isNegated, isMultiLine=isMultiLine )
return _QtIfwScript.ifCondition( _QtIfwScript.isAutoPilot(
isNegated=isNegated ), isMultiLine=isMultiLine )

@staticmethod
def yesNoPopup( msg, title="Question", resultVar="result" ):
Expand Down Expand Up @@ -3628,15 +3663,32 @@ def __genStartMenuDirectoryPageCallbackBody( self ):
def __genReadyForInstallationPageCallbackBody( self ):
self.readyForInstallationPageCallbackBody = (
_QtIfwScript.log("ReadyForInstallationPageCallback") +
_QtIfwScript.ifCmdLineSwitch( _QtIfwScript.AUTO_PILOT_CMD_ARG ) +
_QtIfwScript.ifBoolValue(
_QtIfwScript._IS_CMD_ARGS_TEMP_KEY, isNegated=True,
isMultiLine=True )
)
# Ensure the volatile cmd args are not persisted during the install
# process, and thus carried forward into the maintenance tool context!
for arg, defValue in iteritems( _QtIfwScript._CMD_ARGS ):
self.readyForInstallationPageCallbackBody += (
_QtIfwScript.setValue( '"%s"' %
(_QtIfwScript._CMD_ARGS_TEMP_PREFIX + arg,),
_QtIfwScript.lookupValue( arg, defValue ), isAutoQuote=False ) +
_QtIfwScript.setValue( arg, defValue )
)
self.readyForInstallationPageCallbackBody += (
_QtIfwScript.setBoolValue(
_QtIfwScript._IS_CMD_ARGS_TEMP_KEY, True ) +
_QtIfwScript.END_BLOCK +
_QtIfwScript.ifAutoPilot() +
QtIfwControlScript.clickButton(
QtIfwControlScript.NEXT_BUTTON )
)

def __genPerformInstallationPageCallbackBody( self ):
self.performInstallationPageCallbackBody = (
_QtIfwScript.log("PerformInstallationPageCallback") +
_QtIfwScript.ifCmdLineSwitch( _QtIfwScript.AUTO_PILOT_CMD_ARG ) +
_QtIfwScript.ifAutoPilot() +
QtIfwControlScript.clickButton(
QtIfwControlScript.NEXT_BUTTON )
)
Expand All @@ -3649,6 +3701,20 @@ def __genFinishedPageCallbackBody( self ):
self.finishedPageCallbackBody = (
TAB + _QtIfwScript.log("FinishedPageCallback") )

# restore args from temp
for arg, defValue in iteritems( _QtIfwScript._CMD_ARGS ):
self.finishedPageCallbackBody += (
_QtIfwScript.setValue( '"%s"' % (arg,),
_QtIfwScript.lookupValue(
_QtIfwScript._CMD_ARGS_TEMP_PREFIX + arg,
defValue ),
isAutoQuote=False ) +
_QtIfwScript.setValue(
_QtIfwScript._CMD_ARGS_TEMP_PREFIX + arg, "" )
)
self.finishedPageCallbackBody += _QtIfwScript.setBoolValue(
_QtIfwScript._IS_CMD_ARGS_TEMP_KEY, False )

finshedCheckboxes = [ w for w in self.widgets
if isinstance( w, QtIfwOnFinishedCheckbox ) ]
# on interrupt
Expand Down
5 changes: 3 additions & 2 deletions docs/LowLevel.md
Original file line number Diff line number Diff line change
Expand Up @@ -502,10 +502,11 @@ Static Functions:
cmdLineListArg( arg, default=[] )
ifCmdLineArg( arg, isNegated=False, isMultiLine=False, )
ifCmdLineSwitch( arg, isNegated=False, isHardFalse=False, isMultiLine=False )

isInstalling( isNegated=False, isMultiLine=False )
ifInstalling( isMultiLine=False )
isMaintenanceTool( isNegated=False )
ifMaintenanceTool( isNegated=False, isMultiLine=False )
ifInstalling( isMultiLine=False )

isAutoPilot( isNegated=False )
ifAutoPilot( isNegated=False, isMultiLine=False )
Expand Down

0 comments on commit e288c36

Please sign in to comment.