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