During installation, package.xml
and componentscript.js
are in full effect, allowing for dynamic addition of wizard pages.
However, during uninstallation, the framework does not process component scripts in the same manner, which is why you see that custom pages do not appear.
[Installer/Uninstaller Process]
┌────────────────────┐ ┌──────────────────────────┐ ┌─────────────────────────┐
│ package.xml │ │ componentscript.js │ │ installscript.qs │
│ └─ UserInterfaces │──►│ └─ addWizardPage(...) │──►│ └─ Conditionall │
└────────────────────┘ └──────────────────────────┘ │ modify wizard │
│ ▲ └─────────────────────────┘
│ │ ▲
└──────────────────────────────┘ │
Installation Process │
Uninstallation Process
You should use installscript.qs
to inject custom logic that runs during both installation and uninstallation (as in this example).
Since this script is executed in both contexts, it is the ideal place to conditionally apply modifications for the uninstallation process.
It can distinguish between installation and uninstallation through conditional checks, enabling specific actions during the uninstallation phase.
使用installer.isUninstaller()
确定卸载过程是否正在进行,然后继续执行用于添加或修改向导页的自定义逻辑.
You can add custom pages through installer.addWizardPage
for the installation process.
For uninstallation, consider modifying existing pages or using available hooks in installscript.qs
to interact with the uninstallation process.
在installscript.qs
年中:
function Controller() {
// Constructor for script
}
Controller.prototype.IntroductionPageCallback = function() {
if (installer.isUninstaller()) {
// Custom logic for uninstallation, e.g., modifying the Introduction page
}
}
因此,我唯一的 Select 是修改现有页面(可能访问gui.currentPageWidget()
),并在该页面对象中添加/删除属性/对象.
是的,大概是这样的:
function Controller() {
}
Controller.prototype.IntroductionPageCallback = function() {
if (installer.isUninstaller()) {
// Access the current page displayed in the uninstaller wizard
var currentPage = gui.currentPageWidget();
if (currentPage) {
// Example modification: Change a label text on the current page
// Note: That requires knowing the specific object names and structure of the UI
if (currentPage.findChild("QLabel", "YourLabelObjectName")) {
currentPage.findChild("QLabel", "YourLabelObjectName").text = "Custom text for the uninstallation process";
}
// Example: Adjust visibility of a specific element based on a condition
var specificCondition = true; // Replace this with your actual condition
if (specificCondition && currentPage.findChild("QWidget", "YourWidgetObjectName")) {
currentPage.findChild("QWidget", "YourWidgetObjectName").visible = false;
}
}
}
}