diff options
Diffstat (limited to 'Source/CPack/IFW/cmCPackIFWInstaller.cxx')
-rw-r--r-- | Source/CPack/IFW/cmCPackIFWInstaller.cxx | 451 |
1 files changed, 177 insertions, 274 deletions
diff --git a/Source/CPack/IFW/cmCPackIFWInstaller.cxx b/Source/CPack/IFW/cmCPackIFWInstaller.cxx index dfb336c..b9a9861 100644 --- a/Source/CPack/IFW/cmCPackIFWInstaller.cxx +++ b/Source/CPack/IFW/cmCPackIFWInstaller.cxx @@ -20,310 +20,239 @@ #include <cmXMLWriter.h> #ifdef cmCPackLogger -# undef cmCPackLogger +#undef cmCPackLogger #endif -#define cmCPackLogger(logType, msg) \ - do { \ - std::ostringstream cmCPackLog_msg; \ - cmCPackLog_msg << msg; \ - if(Generator) { \ - Generator->Logger->Log(logType, __FILE__, __LINE__, \ - cmCPackLog_msg.str().c_str()); \ - } \ - } while ( 0 ) - -cmCPackIFWInstaller::cmCPackIFWInstaller() : - Generator(0) +#define cmCPackLogger(logType, msg) \ + do { \ + std::ostringstream cmCPackLog_msg; \ + cmCPackLog_msg << msg; \ + if (Generator) { \ + Generator->Logger->Log(logType, __FILE__, __LINE__, \ + cmCPackLog_msg.str().c_str()); \ + } \ + } while (0) + +cmCPackIFWInstaller::cmCPackIFWInstaller() + : Generator(0) { } -const char *cmCPackIFWInstaller::GetOption(const std::string &op) const +const char* cmCPackIFWInstaller::GetOption(const std::string& op) const { return Generator ? Generator->GetOption(op) : 0; } -bool cmCPackIFWInstaller::IsOn(const std::string &op) const +bool cmCPackIFWInstaller::IsOn(const std::string& op) const { return Generator ? Generator->IsOn(op) : false; } -bool cmCPackIFWInstaller::IsVersionLess(const char *version) +bool cmCPackIFWInstaller::IsVersionLess(const char* version) { return Generator ? Generator->IsVersionLess(version) : false; } -bool cmCPackIFWInstaller::IsVersionGreater(const char *version) +bool cmCPackIFWInstaller::IsVersionGreater(const char* version) { return Generator ? Generator->IsVersionGreater(version) : false; } -bool cmCPackIFWInstaller::IsVersionEqual(const char *version) +bool cmCPackIFWInstaller::IsVersionEqual(const char* version) { return Generator ? Generator->IsVersionEqual(version) : false; } - void cmCPackIFWInstaller::ConfigureFromOptions() { // Name; if (const char* optIFW_PACKAGE_NAME = - this->GetOption("CPACK_IFW_PACKAGE_NAME")) - { + this->GetOption("CPACK_IFW_PACKAGE_NAME")) { Name = optIFW_PACKAGE_NAME; - } - else if (const char* optPACKAGE_NAME = - this->GetOption("CPACK_PACKAGE_NAME")) - { + } else if (const char* optPACKAGE_NAME = + this->GetOption("CPACK_PACKAGE_NAME")) { Name = optPACKAGE_NAME; - } - else - { + } else { Name = "Your package"; - } + } // Title; if (const char* optIFW_PACKAGE_TITLE = - GetOption("CPACK_IFW_PACKAGE_TITLE")) - { + GetOption("CPACK_IFW_PACKAGE_TITLE")) { Title = optIFW_PACKAGE_TITLE; - } - else if (const char* optPACKAGE_DESCRIPTION_SUMMARY = - GetOption("CPACK_PACKAGE_DESCRIPTION_SUMMARY")) - { + } else if (const char* optPACKAGE_DESCRIPTION_SUMMARY = + GetOption("CPACK_PACKAGE_DESCRIPTION_SUMMARY")) { Title = optPACKAGE_DESCRIPTION_SUMMARY; - } - else - { + } else { Title = "Your package description"; - } + } // Version; - if (const char* option = GetOption("CPACK_PACKAGE_VERSION")) - { + if (const char* option = GetOption("CPACK_PACKAGE_VERSION")) { Version = option; - } - else - { + } else { Version = "1.0.0"; - } + } // Publisher - if(const char* optIFW_PACKAGE_PUBLISHER = - GetOption("CPACK_IFW_PACKAGE_PUBLISHER")) - { + if (const char* optIFW_PACKAGE_PUBLISHER = + GetOption("CPACK_IFW_PACKAGE_PUBLISHER")) { Publisher = optIFW_PACKAGE_PUBLISHER; - } - else if(const char* optPACKAGE_VENDOR = GetOption("CPACK_PACKAGE_VENDOR")) - { + } else if (const char* optPACKAGE_VENDOR = + GetOption("CPACK_PACKAGE_VENDOR")) { Publisher = optPACKAGE_VENDOR; - } + } // ProductUrl - if(const char* option = GetOption("CPACK_IFW_PRODUCT_URL")) - { + if (const char* option = GetOption("CPACK_IFW_PRODUCT_URL")) { ProductUrl = option; - } + } // ApplicationIcon - if(const char* option = GetOption("CPACK_IFW_PACKAGE_ICON")) - { - if(cmSystemTools::FileExists(option)) - { + if (const char* option = GetOption("CPACK_IFW_PACKAGE_ICON")) { + if (cmSystemTools::FileExists(option)) { InstallerApplicationIcon = option; - } - else - { + } else { // TODO: implement warning - } } + } // WindowIcon - if(const char* option = GetOption("CPACK_IFW_PACKAGE_WINDOW_ICON")) - { - if(cmSystemTools::FileExists(option)) - { + if (const char* option = GetOption("CPACK_IFW_PACKAGE_WINDOW_ICON")) { + if (cmSystemTools::FileExists(option)) { InstallerWindowIcon = option; - } - else - { + } else { // TODO: implement warning - } } + } // Logo - if(const char* option = GetOption("CPACK_IFW_PACKAGE_LOGO")) - { - if(cmSystemTools::FileExists(option)) - { + if (const char* option = GetOption("CPACK_IFW_PACKAGE_LOGO")) { + if (cmSystemTools::FileExists(option)) { Logo = option; - } - else - { + } else { // TODO: implement warning - } } + } // Start menu if (const char* optIFW_START_MENU_DIR = - this->GetOption("CPACK_IFW_PACKAGE_START_MENU_DIRECTORY")) - { + this->GetOption("CPACK_IFW_PACKAGE_START_MENU_DIRECTORY")) { StartMenuDir = optIFW_START_MENU_DIR; - } - else - { + } else { StartMenuDir = Name; - } + } // Default target directory for installation if (const char* optIFW_TARGET_DIRECTORY = - GetOption("CPACK_IFW_TARGET_DIRECTORY")) - { + GetOption("CPACK_IFW_TARGET_DIRECTORY")) { TargetDir = optIFW_TARGET_DIRECTORY; - } - else if (const char *optPACKAGE_INSTALL_DIRECTORY = - GetOption("CPACK_PACKAGE_INSTALL_DIRECTORY")) - { + } else if (const char* optPACKAGE_INSTALL_DIRECTORY = + GetOption("CPACK_PACKAGE_INSTALL_DIRECTORY")) { TargetDir = "@ApplicationsDir@/"; TargetDir += optPACKAGE_INSTALL_DIRECTORY; - } - else - { + } else { TargetDir = "@RootDir@/usr/local"; - } + } // Default target directory for installation with administrator rights - if (const char* option = GetOption("CPACK_IFW_ADMIN_TARGET_DIRECTORY")) - { + if (const char* option = GetOption("CPACK_IFW_ADMIN_TARGET_DIRECTORY")) { AdminTargetDir = option; - } + } // Repositories Repositories.clear(); RepositoryStruct Repo; - if(const char *site = this->GetOption("CPACK_DOWNLOAD_SITE")) - { + if (const char* site = this->GetOption("CPACK_DOWNLOAD_SITE")) { Repo.Url = site; Repositories.push_back(Repo); - } - if(const char *RepoAllStr = this->GetOption("CPACK_IFW_REPOSITORIES_ALL")) - { + } + if (const char* RepoAllStr = this->GetOption("CPACK_IFW_REPOSITORIES_ALL")) { std::vector<std::string> RepoAllVector; - cmSystemTools::ExpandListArgument(RepoAllStr, - RepoAllVector); - for(std::vector<std::string>::iterator - rit = RepoAllVector.begin(); rit != RepoAllVector.end(); ++rit) - { - std::string prefix = "CPACK_IFW_REPOSITORY_" - + cmsys::SystemTools::UpperCase(*rit) - + "_"; - // Url - if (const char* url = GetOption(prefix + "URL")) - { - Repo.Url = url; - } - else - { - Repo.Url = ""; - } - // Enabled - if (IsOn(prefix + "DISABLED")) - { - Repo.Enabled = "0"; - } - else - { - Repo.Enabled = ""; - } - // Username - if (const char* username = GetOption(prefix + "USERNAME")) - { - Repo.Username = username; - } - else - { - Repo.Username = ""; - } - // Password - if (const char* password = GetOption(prefix + "PASSWORD")) - { - Repo.Password = password; - } - else - { - Repo.Password = ""; - } - // DisplayName - if (const char* displayName = GetOption(prefix + "DISPLAY_NAME")) - { - Repo.DisplayName = displayName; - } - else - { - Repo.DisplayName = ""; - } - - if(!Repo.Url.empty()) - { - Repositories.push_back(Repo); - } + cmSystemTools::ExpandListArgument(RepoAllStr, RepoAllVector); + for (std::vector<std::string>::iterator rit = RepoAllVector.begin(); + rit != RepoAllVector.end(); ++rit) { + std::string prefix = + "CPACK_IFW_REPOSITORY_" + cmsys::SystemTools::UpperCase(*rit) + "_"; + // Url + if (const char* url = GetOption(prefix + "URL")) { + Repo.Url = url; + } else { + Repo.Url = ""; + } + // Enabled + if (IsOn(prefix + "DISABLED")) { + Repo.Enabled = "0"; + } else { + Repo.Enabled = ""; + } + // Username + if (const char* username = GetOption(prefix + "USERNAME")) { + Repo.Username = username; + } else { + Repo.Username = ""; + } + // Password + if (const char* password = GetOption(prefix + "PASSWORD")) { + Repo.Password = password; + } else { + Repo.Password = ""; + } + // DisplayName + if (const char* displayName = GetOption(prefix + "DISPLAY_NAME")) { + Repo.DisplayName = displayName; + } else { + Repo.DisplayName = ""; + } + + if (!Repo.Url.empty()) { + Repositories.push_back(Repo); } } + } // Maintenance tool - if(const char* optIFW_MAINTENANCE_TOOL = - this->GetOption("CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME")) - { + if (const char* optIFW_MAINTENANCE_TOOL = + this->GetOption("CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME")) { MaintenanceToolName = optIFW_MAINTENANCE_TOOL; - } + } // Maintenance tool ini file - if(const char* optIFW_MAINTENANCE_TOOL_INI = - this->GetOption("CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE")) - { + if (const char* optIFW_MAINTENANCE_TOOL_INI = + this->GetOption("CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE")) { MaintenanceToolIniFile = optIFW_MAINTENANCE_TOOL_INI; - } + } // Allow non-ASCII characters - if(this->GetOption("CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS")) - { - if(IsOn("CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS")) - { + if (this->GetOption("CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS")) { + if (IsOn("CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS")) { AllowNonAsciiCharacters = "true"; - } - else - { + } else { AllowNonAsciiCharacters = "false"; - } } + } // Space in path - if(this->GetOption("CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH")) - { - if(IsOn("CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH")) - { + if (this->GetOption("CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH")) { + if (IsOn("CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH")) { AllowSpaceInPath = "true"; - } - else - { + } else { AllowSpaceInPath = "false"; - } } + } // Control script - if(const char* optIFW_CONTROL_SCRIPT = - this->GetOption("CPACK_IFW_PACKAGE_CONTROL_SCRIPT")) - { + if (const char* optIFW_CONTROL_SCRIPT = + this->GetOption("CPACK_IFW_PACKAGE_CONTROL_SCRIPT")) { ControlScript = optIFW_CONTROL_SCRIPT; - } + } } void cmCPackIFWInstaller::GenerateInstallerFile() { // Lazy directory initialization - if(Directory.empty() && Generator) - { + if (Directory.empty() && Generator) { Directory = Generator->toplevel; - } + } // Output stream cmGeneratedFileStream fout((Directory + "/config/config.xml").data()); @@ -339,140 +268,118 @@ void cmCPackIFWInstaller::GenerateInstallerFile() xout.Element("Version", Version); xout.Element("Title", Title); - if(!Publisher.empty()) - { + if (!Publisher.empty()) { xout.Element("Publisher", Publisher); - } + } - if(!ProductUrl.empty()) - { + if (!ProductUrl.empty()) { xout.Element("ProductUrl", ProductUrl); - } + } // ApplicationIcon - if(!InstallerApplicationIcon.empty()) - { + if (!InstallerApplicationIcon.empty()) { std::string name = cmSystemTools::GetFilenameName(InstallerApplicationIcon); std::string path = Directory + "/config/" + name; name = cmSystemTools::GetFilenameWithoutExtension(name); - cmsys::SystemTools::CopyFileIfDifferent( - InstallerApplicationIcon.data(), path.data()); + cmsys::SystemTools::CopyFileIfDifferent(InstallerApplicationIcon.data(), + path.data()); xout.Element("InstallerApplicationIcon", name); - } + } // WindowIcon - if(!InstallerWindowIcon.empty()) - { + if (!InstallerWindowIcon.empty()) { std::string name = cmSystemTools::GetFilenameName(InstallerWindowIcon); std::string path = Directory + "/config/" + name; - cmsys::SystemTools::CopyFileIfDifferent( - InstallerWindowIcon.data(), path.data()); + cmsys::SystemTools::CopyFileIfDifferent(InstallerWindowIcon.data(), + path.data()); xout.Element("InstallerWindowIcon", name); - } + } // Logo - if(!Logo.empty()) - { + if (!Logo.empty()) { std::string name = cmSystemTools::GetFilenameName(Logo); std::string path = Directory + "/config/" + name; cmsys::SystemTools::CopyFileIfDifferent(Logo.data(), path.data()); xout.Element("Logo", name); - } + } // Start menu - if(!IsVersionLess("2.0")) - { + if (!IsVersionLess("2.0")) { xout.Element("StartMenuDir", StartMenuDir); - } + } // Target dir - if(!TargetDir.empty()) - { + if (!TargetDir.empty()) { xout.Element("TargetDir", TargetDir); - } + } // Admin target dir - if(!AdminTargetDir.empty()) - { + if (!AdminTargetDir.empty()) { xout.Element("AdminTargetDir", AdminTargetDir); - } + } // Remote repositories - if (!Repositories.empty()) - { + if (!Repositories.empty()) { xout.StartElement("RemoteRepositories"); - for(std::vector<RepositoryStruct>::iterator - rit = Repositories.begin(); rit != Repositories.end(); ++rit) - { + for (std::vector<RepositoryStruct>::iterator rit = Repositories.begin(); + rit != Repositories.end(); ++rit) { xout.StartElement("Repository"); // Url xout.Element("Url", rit->Url); // Enabled - if(!rit->Enabled.empty()) - { + if (!rit->Enabled.empty()) { xout.Element("Enabled", rit->Enabled); - } + } // Username - if(!rit->Username.empty()) - { + if (!rit->Username.empty()) { xout.Element("Username", rit->Username); - } + } // Password - if(!rit->Password.empty()) - { + if (!rit->Password.empty()) { xout.Element("Password", rit->Password); - } + } // DisplayName - if(!rit->DisplayName.empty()) - { + if (!rit->DisplayName.empty()) { xout.Element("DisplayName", rit->DisplayName); - } - xout.EndElement(); } - xout.EndElement(); + xout.EndElement(); } + xout.EndElement(); + } // Maintenance tool - if(!IsVersionLess("2.0") && !MaintenanceToolName.empty()) - { + if (!IsVersionLess("2.0") && !MaintenanceToolName.empty()) { xout.Element("MaintenanceToolName", MaintenanceToolName); - } + } // Maintenance tool ini file - if(!IsVersionLess("2.0") && !MaintenanceToolIniFile.empty()) - { + if (!IsVersionLess("2.0") && !MaintenanceToolIniFile.empty()) { xout.Element("MaintenanceToolIniFile", MaintenanceToolIniFile); - } + } // Different allows - if(IsVersionLess("2.0")) - { + if (IsVersionLess("2.0")) { // CPack IFW default policy xout.Comment("CPack IFW default policy for QtIFW less 2.0"); xout.Element("AllowNonAsciiCharacters", "true"); xout.Element("AllowSpaceInPath", "true"); + } else { + if (!AllowNonAsciiCharacters.empty()) { + xout.Element("AllowNonAsciiCharacters", AllowNonAsciiCharacters); } - else - { - if(!AllowNonAsciiCharacters.empty()) - { - xout.Element("AllowNonAsciiCharacters", AllowNonAsciiCharacters); - } - if(!AllowSpaceInPath.empty()) - { - xout.Element("AllowSpaceInPath", AllowSpaceInPath); - } + if (!AllowSpaceInPath.empty()) { + xout.Element("AllowSpaceInPath", AllowSpaceInPath); } + } // Control script (copy to config dir) - if(!IsVersionLess("2.0") && !ControlScript.empty()) - { + if (!IsVersionLess("2.0") && !ControlScript.empty()) { std::string name = cmSystemTools::GetFilenameName(ControlScript); std::string path = Directory + "/config/" + name; cmsys::SystemTools::CopyFileIfDifferent(ControlScript.data(), path.data()); xout.Element("ControlScript", name); - } + } xout.EndElement(); xout.EndDocument(); @@ -480,36 +387,32 @@ void cmCPackIFWInstaller::GenerateInstallerFile() void cmCPackIFWInstaller::GeneratePackageFiles() { - if (Packages.empty() || Generator->IsOnePackage()) - { + if (Packages.empty() || Generator->IsOnePackage()) { // Generate default package cmCPackIFWPackage package; package.Generator = Generator; package.Installer = this; // Check package group - if (const char* option = GetOption("CPACK_IFW_PACKAGE_GROUP")) - { + if (const char* option = GetOption("CPACK_IFW_PACKAGE_GROUP")) { package.ConfigureFromGroup(option); package.ForcedInstallation = "true"; - } - else - { + } else { package.ConfigureFromOptions(); - } + } package.GeneratePackageFile(); return; - } + } // Generate packages meta information - for(PackagesMap::iterator pit = Packages.begin(); - pit != Packages.end(); ++pit) - { + for (PackagesMap::iterator pit = Packages.begin(); pit != Packages.end(); + ++pit) { cmCPackIFWPackage* package = pit->second; package->GeneratePackageFile(); } } -void cmCPackIFWInstaller::WriteGeneratedByToStrim(cmXMLWriter &xout) +void cmCPackIFWInstaller::WriteGeneratedByToStrim(cmXMLWriter& xout) { - if(Generator) Generator->WriteGeneratedByToStrim(xout); + if (Generator) + Generator->WriteGeneratedByToStrim(xout); } |