function Component()
{
    // Do not show component selection page
    installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
}

Component.prototype.createOperations = function()
{
    // Create shortcut
    if (installer.value("os") === "win") {

@_CPACK_IFW_SHORTCUT_OPTIONAL@

        component.addOperation("CreateShortcut",
                               installer.value("TargetDir") + "/@CMAKE_DOC_DIR@/cmake.org.html",
                               installer.value("StartMenuDir") + "/CMake Web Site.lnk");

        component.addOperation("CreateShortcut",
                               installer.value("TargetDir") + "/cmake-maintenance.exe",
                               installer.value("StartMenuDir") + "/CMake Maintenance Tool.lnk");
    }

    // Call default implementation
    component.createOperations();
}
