function Component()
{
    // default constructor
}

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();
}
