Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. Application not listed in Control Panel after installation with Qt Installer Framework

Application not listed in Control Panel after installation with Qt Installer Framework

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
qt installer frcontrol panelqt 6.9.1windows 11
1 Posts 1 Posters 190 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    S_r_v
    wrote on last edited by S_r_v
    #1

    QtIFW version: 4.10
    Qt version: 6.9
    OS: Windows 11 Pro (64-bit)

    I created an installer using Qt Installer Framework (QtIFW) for my application let's say "Appl".
    Everything installs correctly and the app runs fine.

    However, when I install it to C:\Program Files (using @ApplicationsDir@),
    the application does not appear in:

    Control Panel → Programs and Features
    Settings → Apps → Installed Apps

    When I install to the user directory (e.g., @HomeDir@/), the app installs successfully and appears in both the places.

    I Have Tried setting <RequiresAdminRights>true</RequiresAdminRights> in my package.xml and confirmed that the installer runs with admin privileges (UAC prompt shown) .Target directory is set to @ApplicationsDir@ and verified that the uninstaller (MaintenanceTool.exe) is created in the install folder but when checked under registry
    given below entry is not created.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    

    config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <Installer>
        <Name>APPL</Name>
        <Version>1.0.0</Version>
        <Title>Appl Installer</Title>
        <Publisher>My Company.</Publisher>
        <ProductUrl>https://www.link.com</ProductUrl>
        <Logo>logo.png</Logo>
        <Banner>banner_image.png</Banner>
        <TargetDir>@ApplicationsDir@</TargetDir>
        <StartMenuDir>APPL</StartMenuDir>
        <WizardDefaultWidth>780</WizardDefaultWidth>
        <WizardDefaultHeight>420</WizardDefaultHeight>
        <WizardStyle>Modern</WizardStyle>
        <InstallerApplicationIcon>logo</InstallerApplicationIcon>
        <InstallerWindowIcon>windowicon.png</InstallerWindowIcon>
        <StyleSheet>stylesheet.qss</StyleSheet>
        <ControlScript>configscript.qs</ControlScript>
    </Installer>
    

    There is only one component present.
    package.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <Package>
        <Name>com.MyComp.appl</Name>
        <DisplayName>Appl</DisplayName>
        <Description>Description</Description>
        <Version>1.0.0</Version>
        <ReleaseDate>2025-10-07</ReleaseDate>
        <Default>true</Default>
        <Script>packagescript.qs</Script>
        <Licenses>
            <License name="License Agreement" file="license.txt" />
        </Licenses>
        <RequiresAdminRights>true</RequiresAdminRights>
    </Package>
    

    I am also attaching the corresponding packagescript.qs and configscript.qs
    packagescript.qs

    function Component()
    {
        if (!installer.isCommandLineInstance())
            gui.pageWidgetByObjectName("LicenseAgreementPage").entered.connect(changeLicenseLabels);
    }
    
    changeLicenseLabels = function()
    {
        page = gui.pageWidgetByObjectName("LicenseAgreementPage");
        page.AcceptLicenseLabel.setText("I agree");
    }
    
    Component.prototype.createOperations = function() {
        component.createOperations();
    
        var appExe = "@TargetDir@/appl.exe"; 
        var startMenuShortcutPath = "@AllUsersStartMenuProgramsPath@\\APPL\\APPL.lnk";
    
        component.addElevatedOperation("CreateShortcut", appExe, startMenuShortcutPath);
    };
    

    configscript.qs

    function Controller() {
        installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false);
    }
    Controller.prototype.ComponentSelectionPageCallback = function() {
        var page = gui.pageWidgetByObjectName("ComponentSelectionPage");
        page.title = "<div align='center'>Select Components</div>";
    
    // funtion to disable NEXT button if no component is selected.
        function updateNextButtonState() {
                var components = installer.components();
                var anySelected = false;
                for (var i = 0; i < components.length; ++i) {
                    if (components[i].isChecked()) {
                        anySelected = true;
                        break;
                    }
                }
                gui.buttonById(QWizard.NextButton).enabled = anySelected;
            }
    
            gui.buttonById(QWizard.NextButton).enabled = false;
            installer.componentSelectionChanged.connect(updateNextButtonState);
            updateNextButtonState();
    
    };
    

    How can I ensure that Qt Installer Framework correctly registers the uninstaller, so the app appears in Control Panel / Programs and Features or Windows Settings → Installed Apps when installed to locations like C:\Program Files ?

    Are there any additional step or metadata needed or did I miss anything?

    1 Reply Last reply
    0
    • Christian EhrlicherC Christian Ehrlicher moved this topic from General and Desktop on

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved