mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 13:51:33 -06:00
CPackWIX: Allow omitting program menu folder and uninstall shortcut
This commit is contained in:
@@ -95,6 +95,10 @@ Windows using WiX.
|
||||
|
||||
If this variable is not set, it will be initialized with CPACK_PACKAGE_NAME
|
||||
|
||||
If this variable is set to ``.``, then application shortcuts will be
|
||||
created directly in the start menu and the uninstaller shortcut will be
|
||||
omitted.
|
||||
|
||||
.. variable:: CPACK_WIX_CULTURES
|
||||
|
||||
Language(s) of the installer
|
||||
|
||||
@@ -537,9 +537,16 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
|
||||
}
|
||||
}
|
||||
|
||||
bool emitUninstallShortcut =
|
||||
emittedShortcutTypes.find(cmWIXShortcuts::START_MENU) !=
|
||||
emittedShortcutTypes.end();
|
||||
bool emitUninstallShortcut = true;
|
||||
const char* cpackWixProgramMenuFolder =
|
||||
GetOption("CPACK_WIX_PROGRAM_MENU_FOLDER");
|
||||
if (cpackWixProgramMenuFolder &&
|
||||
cm::string_view(cpackWixProgramMenuFolder) == ".") {
|
||||
emitUninstallShortcut = false;
|
||||
} else if (emittedShortcutTypes.find(cmWIXShortcuts::START_MENU) ==
|
||||
emittedShortcutTypes.end()) {
|
||||
emitUninstallShortcut = false;
|
||||
}
|
||||
|
||||
if (!CreateShortcuts(std::string(), "ProductFeature", globalShortcuts,
|
||||
emitUninstallShortcut, fileDefinitions,
|
||||
@@ -733,9 +740,16 @@ bool cmCPackWIXGenerator::CreateShortcutsOfSpecificType(
|
||||
{
|
||||
std::string directoryId;
|
||||
switch (type) {
|
||||
case cmWIXShortcuts::START_MENU:
|
||||
directoryId = "PROGRAM_MENU_FOLDER";
|
||||
break;
|
||||
case cmWIXShortcuts::START_MENU: {
|
||||
const char* cpackWixProgramMenuFolder =
|
||||
GetOption("CPACK_WIX_PROGRAM_MENU_FOLDER");
|
||||
if (cpackWixProgramMenuFolder &&
|
||||
cm::string_view(cpackWixProgramMenuFolder) == ".") {
|
||||
directoryId = "ProgramMenuFolder";
|
||||
} else {
|
||||
directoryId = "PROGRAM_MENU_FOLDER";
|
||||
}
|
||||
} break;
|
||||
case cmWIXShortcuts::DESKTOP:
|
||||
directoryId = "DesktopFolder";
|
||||
break;
|
||||
@@ -789,8 +803,13 @@ bool cmCPackWIXGenerator::CreateShortcutsOfSpecificType(
|
||||
fileDefinitions);
|
||||
|
||||
if (type == cmWIXShortcuts::START_MENU) {
|
||||
fileDefinitions.EmitRemoveFolder("CM_REMOVE_PROGRAM_MENU_FOLDER" +
|
||||
idSuffix);
|
||||
const char* cpackWixProgramMenuFolder =
|
||||
GetOption("CPACK_WIX_PROGRAM_MENU_FOLDER");
|
||||
if (cpackWixProgramMenuFolder &&
|
||||
cm::string_view(cpackWixProgramMenuFolder) != ".") {
|
||||
fileDefinitions.EmitRemoveFolder("CM_REMOVE_PROGRAM_MENU_FOLDER" +
|
||||
idSuffix);
|
||||
}
|
||||
}
|
||||
|
||||
if (emitUninstallShortcut) {
|
||||
|
||||
@@ -14,10 +14,12 @@ void cmWIXDirectoriesSourceWriter::EmitStartMenuFolder(
|
||||
BeginElement("Directory");
|
||||
AddAttribute("Id", "ProgramMenuFolder");
|
||||
|
||||
BeginElement("Directory");
|
||||
AddAttribute("Id", "PROGRAM_MENU_FOLDER");
|
||||
AddAttribute("Name", startMenuFolder);
|
||||
EndElement("Directory");
|
||||
if (startMenuFolder != ".") {
|
||||
BeginElement("Directory");
|
||||
AddAttribute("Id", "PROGRAM_MENU_FOLDER");
|
||||
AddAttribute("Name", startMenuFolder);
|
||||
EndElement("Directory");
|
||||
}
|
||||
|
||||
EndElement("Directory");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user