Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QtIFW: Maintenance.exe does not start (no uninstall, no update)



  • Hi,

    i installed my (offline-) application with local repository (set env-vars, installed database, call several batch-scripts etc.) and now i want to uninstall my application with the generated uninstaller. If i double-click the exe nothing appears.

    What i am doing wrong? I do not even know where to start to find the bug.

    My installer.js of my config.xml looks like this.

    // https://doc.qt.io/qtinstallerframework/noninteractive.html
    var isSilent = 0;
    
    function Controller(){	 	 
    	
    	if(installer.isInstaller()){
    		
    	
    		var silent = installer.value("silent");	
    		if(silent == 1 || silent=="true" && silent != null){
    			installer.autoRejectMessageBoxes;
    			gui.setSilent(true);
    			isSilent = 1;			
    		}		
    	}	
    	
    	if(installer.isUninstaller()){		
    		var silent = installer.value("silent");	
    		if(silent == 1 || silent=="true" && silent != null){			
    			installer.autoRejectMessageBoxes;		
    			gui.setSilent(true);
    			isSilent = 1;				
    		}		
    	}
    }
    
    
    
    Controller.prototype.IntroductionPageCallback = function()
    {
    	//installer.setValue("TargetDir", "");
    	if(isSilent == 1){
    		gui.clickButton(buttons.NextButton);
    	}
    	
    }
    
    Controller.prototype.TargetDirectoryPageCallback = function(){
    
    	
    	if(isSilent == 1){
    		var target = installer.value("target");		
    		if(target != null && target != ""){
    			var widget = gui.currentPageWidget();
    			if(widget != null){		
    				widget.TargetDirectoryLineEdit.setText(target);
    			}	
    		}		
    		gui.clickButton(buttons.NextButton);			
    	}	
    	
    }
    
    
    
    
    Controller.prototype.ComponentSelectionPageCallback = function(){
    
    	
    	if(installer.isInstaller()){
    		var widget = gui.currentPageWidget(); // get the current wizard page
    		if (widget != null) {
    			widget.selectAll();        					
    			widget.findChild("SelectAllComponentsButton").setEnabled(false);
    			widget.findChild("DeselectAllComponentsButton").setEnabled(false);
    			widget.findChild("SelectDefaultComponentsButton").setEnabled(false);
    			widget.findChild("ResetComponentsButton").setEnabled(false);			
    		}	
    	}
    	
    	if(isSilent == 1){
    		var widget = gui.currentPageWidget();
    		if(widget != null){
    			widget.selectAll();			
    		}
    		gui.clickButton(buttons.NextButton);
    	}
    }
    
    Controller.prototype.StartMenuDirectoryPageCallback = function(){	
    	if(isSilent == 1){
    		gui.clickButton(buttons.NextButton);
    	}
    }
    
    Controller.prototype.LicenseAgreementPageCallback = function(){	
    	if(isSilent == 1){
    		var widget = gui.currentPageWidget();	
    		if(widget != null){
    			widget.AcceptLicenseRadioButton.setChecked(true);				
    		}		
    		gui.clickButton(buttons.NextButton);
    	}	
    }
    
    Controller.prototype.ReadyForInstallationPageCallback = function(){
    	if(isSilent == 1){
    		gui.clickButton(buttons.NextButton);
    	}	
    }
    
    Controller.prototype.PerformInstallationPageCallback = function(){	
    	if(isSilent == 1){
    		gui.clickButton(buttons.NextButton);
    	};	
    }
    
    Controller.prototype.FinishedPageCallback = function(){	
    	
    	if(installer.isInstaller()){
    		installer.gainAdminRights();
    		var dir = installer.value("TargetDir");
    		if(installer.fileExists(dir +"/tmp") == true){			
    			installer.performOperation("Delete", "@TargetDir@/tmp");						
    		}	
    		installer.dropAdminRights();
    	}	
    	
    	if(isSilent == 1){
    		gui.clickButton(buttons.FinishButton);		
    	}		
    }
    

    Thank you for your help in advance.
    bets regards



  • @Schenk said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    If i double-click the exe nothing appears.

    Does it uninstall silently ??



  • No, the directory still exists and there is no process in taskmanager.



  • @Schenk said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    if(installer.isUninstaller()){
    var silent = installer.value("silent");
    if(silent == 1 || silent=="true" && silent != null){
    installer.autoRejectMessageBoxes;
    gui.setSilent(true);
    isSilent = 1;
    }

    Is it required???



  • To be honest, I do not know. :/ I will test it.
    Normaly, the if condition is not called in the uninstaller Routine....



  • @Schenk said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    I do not know.

    Can you keep only required code and test them ?



  • I tested it with

    function Controller(){	 	 
    	
    	/* if(installer.isInstaller()){
    		
    	
    		var silent = installer.value("silent");	
    		if(silent == 1 || silent=="true" && silent != null){
    			installer.autoRejectMessageBoxes;
    			gui.setSilent(true);
    			isSilent = 1;			
    		}		
    	}	
    	
    	if(installer.isUninstaller()){		
    		var silent = installer.value("silent");	
    		if(silent == 1 || silent=="true" && silent != null){			
    			installer.autoRejectMessageBoxes;		
    			gui.setSilent(true);
    			isSilent = 1;				
    		}		
    	} */
    }
    

    and with

    function Controller(){	 	 
    	
    	/* if(installer.isInstaller()){
    		
    	
    		var silent = installer.value("silent");	
    		if(silent == 1 || silent=="true" && silent != null){
    			installer.autoRejectMessageBoxes;
    			gui.setSilent(true);
    			isSilent = 1;			
    		}		
    	}	
    	*/
    
    	if(installer.isUninstaller()){		
    		var silent = installer.value("silent");	
    		if(silent == 1 || silent=="true" && silent != null){			
    			installer.autoRejectMessageBoxes;		
    			gui.setSilent(true);
    			isSilent = 1;				
    		}		
    	} 
    }
    

    Even if i stop all processes which have access to the files in the installation folder, it will not work.
    The uninstaller-process does not start. Even if i call it with or without admin rights from explorer; or from an admin console with

    uninstaller.exe silent=1
    uninstaller.exe silent==1
    uninstaller.exe "silent=1"
    uninstaller.exe silent=true
    uninstaller.exe silent="true"
    uninstaller.exe "silent=true"
    

    there is no success and no process in the task manager.
    How can i delete the installation manually? I can delete the files manually, but the appliacation still exists in the windows Program & Features table.



  • @Schenk said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    How can i delete the installation manually?

    There is an MaintenanceTool.exe which uninstalls for you.

    @Schenk said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    I tested it with

    Can you just try with this minimum steps required to create an installer and check?



  • @Ratzz The maintanance.exe does not work. This is why i created this thread. But i found the problem, but not really a solution to fix it.
    The uninstaller.exe /maintenance.exe contained a ".". After renaming the .dat., .exe and ini-files, it can be used to uninstall the application, but no update and no separate items.



  • @Schenk said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    After renaming the .dat., .exe and ini-files

    Renaming may be bad idea.

    @Ratzz said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    Can you just try with this minimum steps required to create an installer and check?

    can you please make a sample instead of messing up all together ?http://doc.qt.io/qtinstallerframework/ifw-tutorial.html



  • @Ratzz Hi Ratzz,

    everthing is good ;)

    @Ratzz said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    @Ratzz said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    Can you just try with this minimum steps required to create an installer and check?

    can you please make a sample instead of messing up all together ?http://doc.qt.io/qtinstallerframework/ifw-tutorial.html

    I did the minium sample and it works fine. So i analysed it to find my fault.

    @Ratzz said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    @Schenk said in QtIFW: Maintenance.exe does not start (no uninstall, no update):

    After renaming the .dat., .exe and ini-files

    Renaming may be bad idea.

    My config file contained the following line and the generated uninstaller.exe (MyApp2.0_Maintenance.exe) it will not work, because of the dot (" . ") in the description.

    [...]
    <MaintenanceToolName>MyApp2.0_Maintenance</MaintenanceToolName>	
    [...]
    

    I had to rename the files, so that i am able to delete the existing installation and provide a new, functional version of my installer.



  • @Schenk
    So is the thread solved?




Log in to reply