Commit de77d4a7 authored by Nils Gladitz's avatar Nils Gladitz

CPackWIX: Allow multiple patch files and diagnose if any are missing

CPACK_WIX_PATCH_FILE now accepts a list of patch files.
An error will now be produced if any of the patch files is missing.

Previously this would be silently ignored.
parent 38d723b3
......@@ -119,7 +119,8 @@
#
# .. variable:: CPACK_WIX_PATCH_FILE
#
# Optional XML file with fragments to be inserted into generated WiX sources
# Optional list of XML files with fragments to be inserted into
# generated WiX sources
#
# This optional variable can be used to specify an XML file that the
# WiX generator will use to inject fragments into its generated
......
......@@ -242,7 +242,16 @@ bool cmCPackWIXGenerator::InitializeWiXConfiguration()
const char* patchFilePath = GetOption("CPACK_WIX_PATCH_FILE");
if(patchFilePath)
{
this->Patch->LoadFragments(patchFilePath);
std::vector<std::string> patchFilePaths;
cmSystemTools::ExpandListArgument(patchFilePath, patchFilePaths);
for(size_t i = 0; i < patchFilePaths.size(); ++i)
{
if(!this->Patch->LoadFragments(patchFilePaths[i]))
{
return false;
}
}
}
return true;
......
......@@ -20,10 +20,18 @@ cmWIXPatch::cmWIXPatch(cmCPackLog* logger):
}
void cmWIXPatch::LoadFragments(std::string const& patchFilePath)
bool cmWIXPatch::LoadFragments(std::string const& patchFilePath)
{
cmWIXPatchParser parser(Fragments, Logger);
parser.ParseFile(patchFilePath.c_str());
if(!parser.ParseFile(patchFilePath.c_str()))
{
cmCPackLogger(cmCPackLog::LOG_ERROR,
"Failed parsing XML patch file: '" <<
patchFilePath << "'" << std::endl);
return false;
}
return true;
}
void cmWIXPatch::ApplyFragment(
......
......@@ -26,7 +26,7 @@ class cmWIXPatch
public:
cmWIXPatch(cmCPackLog* logger);
void LoadFragments(std::string const& patchFilePath);
bool LoadFragments(std::string const& patchFilePath);
void ApplyFragment(std::string const& id, cmWIXSourceWriter& writer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment