Merge topic 'wix-additions'
642fa25d CPackWIX: support installation of empty directories 378eb5b7 CPackWIX: Allow Windows Installer property customization
This commit is contained in:
commit
909c0533d0
@ -216,9 +216,24 @@
|
|||||||
# allow other CMake projects to find your package with
|
# allow other CMake projects to find your package with
|
||||||
# the :command:`find_package` command.
|
# the :command:`find_package` command.
|
||||||
#
|
#
|
||||||
|
# .. variable:: CPACK_WIX_PROPERTY_<PROPERTY>
|
||||||
|
#
|
||||||
|
# This variable can be used to provide a value for
|
||||||
|
# the Windows Installer property ``<PROPERTY>``
|
||||||
|
#
|
||||||
|
# The follwing list contains some example properties that can be used to
|
||||||
|
# customize information under
|
||||||
|
# "Programs and Features" (also known as "Add or Remove Programs")
|
||||||
|
#
|
||||||
|
# * ARPCOMMENTS - Comments
|
||||||
|
# * ARPHELPLINK - Help and support information URL
|
||||||
|
# * ARPURLINFOABOUT - General information URL
|
||||||
|
# * URLUPDATEINFO - Update information URL
|
||||||
|
# * ARPHELPTELEPHONE - Help and support telephone number
|
||||||
|
# * ARPSIZE - Size (in kilobytes) of the application
|
||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
# Copyright 2013 Kitware, Inc.
|
# Copyright 2014 Kitware, Inc.
|
||||||
#
|
#
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
# Distributed under the OSI-approved BSD License (the "License");
|
||||||
# see accompanying file Copyright.txt for details.
|
# see accompanying file Copyright.txt for details.
|
||||||
|
@ -40,5 +40,7 @@
|
|||||||
<FeatureRef Id="ProductFeature"/>
|
<FeatureRef Id="ProductFeature"/>
|
||||||
|
|
||||||
<UIRef Id="$(var.CPACK_WIX_UI_REF)" />
|
<UIRef Id="$(var.CPACK_WIX_UI_REF)" />
|
||||||
|
|
||||||
|
<?include "properties.wxi"?>
|
||||||
</Product>
|
</Product>
|
||||||
</Wix>
|
</Wix>
|
||||||
|
@ -215,6 +215,13 @@ bool cmCPackWIXGenerator::InitializeWiXConfiguration()
|
|||||||
SetOption("CPACK_WIX_UI_REF", defaultRef.c_str());
|
SetOption("CPACK_WIX_UI_REF", defaultRef.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* packageContact = GetOption("CPACK_PACKAGE_CONTACT");
|
||||||
|
if(packageContact != 0 &&
|
||||||
|
GetOption("CPACK_WIX_PROPERTY_ARPCONTACT") == 0)
|
||||||
|
{
|
||||||
|
SetOption("CPACK_WIX_PROPERTY_ARPCONTACT", packageContact);
|
||||||
|
}
|
||||||
|
|
||||||
CollectExtensions("CPACK_WIX_EXTENSIONS", this->CandleExtensions);
|
CollectExtensions("CPACK_WIX_EXTENSIONS", this->CandleExtensions);
|
||||||
CollectExtensions("CPACK_WIX_CANDLE_EXTENSIONS", this->CandleExtensions);
|
CollectExtensions("CPACK_WIX_CANDLE_EXTENSIONS", this->CandleExtensions);
|
||||||
|
|
||||||
@ -239,6 +246,7 @@ bool cmCPackWIXGenerator::PackageFilesImpl()
|
|||||||
}
|
}
|
||||||
|
|
||||||
CreateWiXVariablesIncludeFile();
|
CreateWiXVariablesIncludeFile();
|
||||||
|
CreateWiXPropertiesIncludeFile();
|
||||||
|
|
||||||
if(!CreateWiXSourceFiles())
|
if(!CreateWiXSourceFiles())
|
||||||
{
|
{
|
||||||
@ -315,6 +323,35 @@ void cmCPackWIXGenerator::CreateWiXVariablesIncludeFile()
|
|||||||
CopyDefinition(includeFile, "CPACK_WIX_UI_REF");
|
CopyDefinition(includeFile, "CPACK_WIX_UI_REF");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmCPackWIXGenerator::CreateWiXPropertiesIncludeFile()
|
||||||
|
{
|
||||||
|
std::string includeFilename =
|
||||||
|
this->CPackTopLevel + "/properties.wxi";
|
||||||
|
|
||||||
|
cmWIXSourceWriter includeFile(
|
||||||
|
this->Logger, includeFilename, true);
|
||||||
|
|
||||||
|
std::string prefix = "CPACK_WIX_PROPERTY_";
|
||||||
|
std::vector<std::string> options = GetOptions();
|
||||||
|
|
||||||
|
for(size_t i = 0; i < options.size(); ++i)
|
||||||
|
{
|
||||||
|
std::string const& name = options[i];
|
||||||
|
|
||||||
|
if(name.length() > prefix.length() &&
|
||||||
|
name.substr(0, prefix.length()) == prefix)
|
||||||
|
{
|
||||||
|
std::string id = name.substr(prefix.length());
|
||||||
|
std::string value = GetOption(name.c_str());
|
||||||
|
|
||||||
|
includeFile.BeginElement("Property");
|
||||||
|
includeFile.AddAttribute("Id", id);
|
||||||
|
includeFile.AddAttribute("Value", value);
|
||||||
|
includeFile.EndElement("Property");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void cmCPackWIXGenerator::CopyDefinition(
|
void cmCPackWIXGenerator::CopyDefinition(
|
||||||
cmWIXSourceWriter &source, std::string const& name)
|
cmWIXSourceWriter &source, std::string const& name)
|
||||||
{
|
{
|
||||||
@ -777,6 +814,16 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
|
|||||||
cmsys::Directory dir;
|
cmsys::Directory dir;
|
||||||
dir.Load(topdir.c_str());
|
dir.Load(topdir.c_str());
|
||||||
|
|
||||||
|
if(dir.GetNumberOfFiles() == 2)
|
||||||
|
{
|
||||||
|
std::string componentId = fileDefinitions.EmitComponentCreateFolder(
|
||||||
|
directoryId, GenerateGUID());
|
||||||
|
|
||||||
|
featureDefinitions.EmitComponentRef(componentId);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for(size_t i = 0; i < dir.GetNumberOfFiles(); ++i)
|
for(size_t i = 0; i < dir.GetNumberOfFiles(); ++i)
|
||||||
{
|
{
|
||||||
std::string fileName = dir.GetFile(static_cast<unsigned long>(i));
|
std::string fileName = dir.GetFile(static_cast<unsigned long>(i));
|
||||||
|
@ -73,6 +73,8 @@ private:
|
|||||||
|
|
||||||
void CreateWiXVariablesIncludeFile();
|
void CreateWiXVariablesIncludeFile();
|
||||||
|
|
||||||
|
void CreateWiXPropertiesIncludeFile();
|
||||||
|
|
||||||
void CopyDefinition(
|
void CopyDefinition(
|
||||||
cmWIXSourceWriter &source, std::string const& name);
|
cmWIXSourceWriter &source, std::string const& name);
|
||||||
|
|
||||||
|
@ -109,6 +109,28 @@ void cmWIXFilesSourceWriter::EmitUninstallShortcut(
|
|||||||
EndElement("Shortcut");
|
EndElement("Shortcut");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string cmWIXFilesSourceWriter::EmitComponentCreateFolder(
|
||||||
|
std::string const& directoryId, std::string const& guid)
|
||||||
|
{
|
||||||
|
std::string componentId =
|
||||||
|
std::string("CM_C_EMPTY_") + directoryId;
|
||||||
|
|
||||||
|
BeginElement("DirectoryRef");
|
||||||
|
AddAttribute("Id", directoryId);
|
||||||
|
|
||||||
|
BeginElement("Component");
|
||||||
|
AddAttribute("Id", componentId);
|
||||||
|
AddAttribute("Guid", guid);
|
||||||
|
|
||||||
|
BeginElement("CreateFolder");
|
||||||
|
|
||||||
|
EndElement("CreateFolder");
|
||||||
|
EndElement("Component");
|
||||||
|
EndElement("DirectoryRef");
|
||||||
|
|
||||||
|
return componentId;
|
||||||
|
}
|
||||||
|
|
||||||
std::string cmWIXFilesSourceWriter::EmitComponentFile(
|
std::string cmWIXFilesSourceWriter::EmitComponentFile(
|
||||||
std::string const& directoryId,
|
std::string const& directoryId,
|
||||||
std::string const& id,
|
std::string const& id,
|
||||||
|
@ -45,6 +45,10 @@ public:
|
|||||||
|
|
||||||
void EmitUninstallShortcut(std::string const& packageName);
|
void EmitUninstallShortcut(std::string const& packageName);
|
||||||
|
|
||||||
|
std::string EmitComponentCreateFolder(
|
||||||
|
std::string const& directoryId,
|
||||||
|
std::string const& guid);
|
||||||
|
|
||||||
std::string EmitComponentFile(
|
std::string EmitComponentFile(
|
||||||
std::string const& directoryId,
|
std::string const& directoryId,
|
||||||
std::string const& id,
|
std::string const& id,
|
||||||
|
@ -1201,6 +1201,12 @@ const char* cmCPackGenerator::GetOption(const char* op) const
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
std::vector<std::string> cmCPackGenerator::GetOptions() const
|
||||||
|
{
|
||||||
|
return this->MakefileMap->GetDefinitions();
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
int cmCPackGenerator::PackageFiles()
|
int cmCPackGenerator::PackageFiles()
|
||||||
{
|
{
|
||||||
|
@ -102,6 +102,7 @@ public:
|
|||||||
void SetOption(const char* op, const char* value);
|
void SetOption(const char* op, const char* value);
|
||||||
void SetOptionIfNotSet(const char* op, const char* value);
|
void SetOptionIfNotSet(const char* op, const char* value);
|
||||||
const char* GetOption(const char* op) const;
|
const char* GetOption(const char* op) const;
|
||||||
|
std::vector<std::string> GetOptions() const;
|
||||||
bool IsSet(const char* name) const;
|
bool IsSet(const char* name) const;
|
||||||
bool IsOn(const char* name) const;
|
bool IsOn(const char* name) const;
|
||||||
|
|
||||||
|
@ -9,6 +9,11 @@ target_link_libraries(my-libapp mylib)
|
|||||||
|
|
||||||
add_executable(my-other-app myotherapp.cpp)
|
add_executable(my-other-app myotherapp.cpp)
|
||||||
|
|
||||||
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/empty)
|
||||||
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/empty
|
||||||
|
DESTINATION extras
|
||||||
|
COMPONENT extras)
|
||||||
|
|
||||||
install(TARGETS mylib
|
install(TARGETS mylib
|
||||||
ARCHIVE
|
ARCHIVE
|
||||||
DESTINATION lib
|
DESTINATION lib
|
||||||
@ -58,6 +63,9 @@ set(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/patch.xml")
|
|||||||
|
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
|
||||||
|
|
||||||
|
set(CPACK_WIX_PROPERTY_ARPCOMMENTS "My Custom ARPCOMMENTS")
|
||||||
|
set(CPACK_WIX_PROPERTY_ARPHELPLINK "http://www.cmake.org")
|
||||||
|
|
||||||
include(CPack)
|
include(CPack)
|
||||||
|
|
||||||
cpack_add_install_type(Full DISPLAY_NAME "Everything")
|
cpack_add_install_type(Full DISPLAY_NAME "Everything")
|
||||||
@ -69,6 +77,12 @@ cpack_add_component_group(Development
|
|||||||
EXPANDED
|
EXPANDED
|
||||||
DESCRIPTION "All of the tools you'll ever need to develop software")
|
DESCRIPTION "All of the tools you'll ever need to develop software")
|
||||||
|
|
||||||
|
cpack_add_component(extras
|
||||||
|
DISPLAY_NAME "Extras"
|
||||||
|
DESCRIPTION "Extras"
|
||||||
|
GROUP Runtime
|
||||||
|
INSTALL_TYPES Full)
|
||||||
|
|
||||||
cpack_add_component(applications
|
cpack_add_component(applications
|
||||||
REQUIRED
|
REQUIRED
|
||||||
DISPLAY_NAME "MyLib Application"
|
DISPLAY_NAME "MyLib Application"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user