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 -
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 -
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(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.... -
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 withuninstaller.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. -
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 withuninstaller.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?
-
@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. -
@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
-
@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.
-
@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.