ventanas restablecer quitar modificar inicio iconos eliminar directo como carpeta cambiar anclados ancladas acceso c++ cmake nsis cpack

c++ - restablecer - quitar ventanas ancladas windows 10



cómo obtener cpack para generar accesos directos de menú de inicio correctos (1)

Quiero crear un instalador para algunos programas en Windows con cmake y cpack. Quiero poder seleccionar qué programas instalar y los programas seleccionados aparecerán en el menú de inicio como accesos directos. Aquí hay una simple prueba. Han hecho un componente para cada programa pero no pueden encontrar la manera de generar la variable del menú de inicio. Ahora, todos los programas están siempre en el menú, incluso si no están seleccionados para su instalación. Primero es un programa simple para ser instalado.

#include <iostream> #include <conio.h> int main() { std::cout << "prog1" << std::endl; _getch(); return 0; }

y aquí está el archivo CMakeLists.txt

cmake_minimum_required( VERSION 2.8 ) project ( CompoTest ) add_executable(prog1 prog1.cpp) add_executable(prog2 prog2.cpp) add_executable(prog3 prog3.cpp) install(TARGETS prog1 RUNTIME DESTINATION bin COMPONENT compo1) install(TARGETS prog2 RUNTIME DESTINATION bin COMPONENT compo2) install(TARGETS prog3 RUNTIME DESTINATION bin COMPONENT compo3) set ( CPACK_PACKAGE_VERSION "1.0.0" ) set(CPACK_PACKAGE_EXECUTABLES prog1 "prog 1" prog2 "prog 2" prog3 "prog 3" ) set ( CPACK_COMPONENTS_ALL compo1 compo2 compo3 ) include (CPack)

El problema es generar atajos de menú de inicio dependiendo de qué programa se seleccione en la instalación. Pensé que debería ser fácil, pero parece que no lo es. Es posible hacer esto.

Actualización: me parece que no se generan accesos directos al menú de inicio para ningún ejemplo en http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack o ¿estoy haciendo algo mal?


Es un problema conocido con cpack. ver http://public.kitware.com/Bug/print_bug_page.php?bug_id=9846

Debe usar la plantilla NSIS para crear accesos directos de menú de inicio personalizados.

Pasos:

  • Copie NSIS.template.in desde el directorio cmake instalado. (por ejemplo, C: / Archivos de programa / CMake 2.8 / share / cmake-2.8 / Modules / NSIS.template.in) a la dirección de origen de Cmake de su proyecto.

  • Actualización copiada NSIS.template.in similar al fragmento siguiente (tomado de http://public.kitware.com/Bug/print_bug_page.php?bug_id=9846 ):

    if (executable file is in component ''x'') if (installing component ''x'') CreateShortCut "$SMPROGRAMS/$STARTMENU_FOLDER/x.lnk" "$INSTDIR/x.exe" if (uninstalling executable x) Delete "$SMPROGRAMS/$MUI_TEMP/x.lnk"

  • Agregue la línea siguiente a CMakeLists.txt justo antes de incluir (cpack):

    set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ${CMAKE_MODULE_PATH})