Каркас установщика Qt: удалите переключатели из деинсталлятора
Я создал простой установщик для нашего продукта только с одним компонентом и без менеджера удаленных репозиториев.
Когда я запускаю программу удаления, на странице введения отображаются 3 переключателя:
Менеджер пакетов
Обновление компонентов
Удалить все компоненты
Мне нужен только третий, поэтому я проверил эту документацию:
http://doc-snapshot.qt-project.org/qtifw-master/noninteractive.html
Как я понял и не смог скрыть кнопки, я добавил это в свой файл install.qs:
function Controller()
{
}
Controller.prototype.IntroductionPageCallback = function()
{
gui.clickButton(buttons.NextButton);
}
Это должно автоматически щелкнуть Далее на странице введения, чтобы перейти непосредственно на страницу удаления.
Ничего не происходит, что бы я ни писал в функциях контроллера, на странице введения показаны 3 переключателя. Я добавил несколько сообщений в функцию, и они никогда не вызываются.
Кто-нибудь знает, как это решить?
1 ответ
Я думаю, что у меня есть 2 рабочих решения.
Первое решение, если вы хотите удалить программу на одной странице:
Вам нужно создать контроллер, подобный тому, который вы запускали раньше:
function Controller() {
if (installer.isUninstaller()) {
installer.setDefaultPageVisible(QInstaller.Introduction, false);
installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
installer.setDefaultPageVisible(QInstaller.LicenseCheck, false);
}
}
Это отключит все страницы в классическом рабочем процессе установки / удаления. Убедитесь, что вы находитесь в режиме удаления.
Если вы хотите удалить 2 страницы:
function Controller()
{
}
Controller.prototype.IntroductionPageCallback = function()
{
if (installer.isUninstaller()) {
// Get the current wizard page
var widget = gui.currentPageWidget();
if (widget != null) {
// Don't show buttons because we just want to uninstall the software
widget.findChild("PackageManagerRadioButton").visible = false;
widget.findChild("UpdaterRadioButton").visible = false;
widget.findChild("UninstallerRadioButton").visible = false;
}
}
}
бонус
В режиме установщика по умолчанию выберите "Я принимаю" лицензионное соглашение. Серьезно, а кто нет?
Controller.prototype.LicenseAgreementPageCallback = function()
{
var widget = gui.currentPageWidget();
if (widget != null) {
widget.AcceptLicenseRadioButton.checked = true;
}
}