...revealed by the Nightly dashboard runs last night. Use "size_t" instead of "std::size_t" so that it compiles with Visual Studio 6, too. Fix warnings about shadowed "tmp" local variable and ordering of member variables vs. lines of code in the constructor initializer list.
102 lines
2.5 KiB
C++
102 lines
2.5 KiB
C++
/*============================================================================
|
|
CMake - Cross Platform Makefile Generator
|
|
Copyright 2000-2012 Kitware, Inc.
|
|
|
|
Distributed under the OSI-approved BSD License (the "License");
|
|
see accompanying file Copyright.txt for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
See the License for more information.
|
|
============================================================================*/
|
|
|
|
#ifndef cmCPackWIXGenerator_h
|
|
#define cmCPackWIXGenerator_h
|
|
|
|
#include <CPack/cmCPackGenerator.h>
|
|
|
|
#include <string>
|
|
#include <map>
|
|
|
|
class cmWIXSourceWriter;
|
|
|
|
/** \class cmCPackWIXGenerator
|
|
* \brief A generator for WIX files
|
|
*/
|
|
class cmCPackWIXGenerator : public cmCPackGenerator
|
|
{
|
|
public:
|
|
cmCPackTypeMacro(cmCPackWIXGenerator, cmCPackGenerator);
|
|
|
|
protected:
|
|
virtual int InitializeInternal();
|
|
|
|
virtual int PackageFiles();
|
|
|
|
virtual const char* GetOutputExtension()
|
|
{
|
|
return ".msi";
|
|
}
|
|
|
|
virtual enum CPackSetDestdirSupport SupportsSetDestdir() const
|
|
{
|
|
return SETDESTDIR_UNSUPPORTED;
|
|
}
|
|
|
|
virtual bool SupportsAbsoluteDestination() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
virtual bool SupportsComponentInstallation() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
private:
|
|
bool InitializeWiXConfiguration();
|
|
|
|
bool PackageFilesImpl();
|
|
|
|
bool CreateWiXVariablesIncludeFile();
|
|
|
|
void CopyDefinition(
|
|
cmWIXSourceWriter &source, const std::string &name);
|
|
|
|
void AddDefinition(cmWIXSourceWriter& source,
|
|
const std::string& name, const std::string& value);
|
|
|
|
bool CreateWiXSourceFiles();
|
|
|
|
bool CreateLicenseFile();
|
|
|
|
bool RunWiXCommand(const std::string& command);
|
|
|
|
bool RunCandleCommand(
|
|
const std::string& sourceFile, const std::string& objectFile);
|
|
|
|
bool RunLightCommand(const std::string& objectFiles);
|
|
|
|
void AddDirectoryAndFileDefinitons(const std::string& topdir,
|
|
const std::string& directoryId,
|
|
cmWIXSourceWriter& directoryDefinitions,
|
|
cmWIXSourceWriter& fileDefinitions,
|
|
cmWIXSourceWriter& featureDefinitions,
|
|
size_t& directoryCounter,
|
|
size_t& fileCounter);
|
|
|
|
bool RequireOption(const std::string& name, std::string& value) const;
|
|
|
|
std::string GetArchitecture() const;
|
|
|
|
static std::string GenerateGUID();
|
|
|
|
static std::string QuotePath(const std::string& path);
|
|
|
|
static std::string GetRightmostExtension(const std::string& filename);
|
|
|
|
std::vector<std::string> wixSources;
|
|
};
|
|
|
|
#endif
|