本文整理汇总了C++中Version::setVersion方法的典型用法代码示例。如果您正苦于以下问题:C++ Version::setVersion方法的具体用法?C++ Version::setVersion怎么用?C++ Version::setVersion使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Version
的用法示例。
在下文中一共展示了Version::setVersion方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: findPath_npackdcl
QString InstalledPackages::findPath_npackdcl(const Dependency& dep)
{
QString ret;
QString err;
WindowsRegistry packagesWR;
LONG e;
err = packagesWR.open(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Npackd\\Npackd\\Packages", false, KEY_READ, &e);
if (e == ERROR_FILE_NOT_FOUND || e == ERROR_PATH_NOT_FOUND) {
err = "";
} else if (err.isEmpty()) {
Version found = Version::EMPTY;
QStringList entries = packagesWR.list(&err);
for (int i = 0; i < entries.count(); ++i) {
QString name = entries.at(i);
int pos = name.lastIndexOf("-");
if (pos <= 0)
continue;
QString packageName = name.left(pos);
if (packageName != dep.package)
continue;
QString versionName = name.right(name.length() - pos - 1);
Version version;
if (!version.setVersion(versionName))
continue;
if (!dep.test(version))
continue;
if (found != Version::EMPTY) {
if (version.compare(found) < 0)
continue;
}
WindowsRegistry entryWR;
err = entryWR.open(packagesWR, name, KEY_READ);
if (!err.isEmpty())
continue;
QString p = entryWR.get("Path", &err).trimmed();
if (!err.isEmpty())
continue;
QString dir;
if (p.isEmpty())
dir = "";
else {
QDir d(p);
if (d.exists()) {
dir = p;
} else {
dir = "";
}
}
if (dir.isEmpty())
continue;
found = version;
ret = dir;
}
}
return ret;
}
示例2: readRegistryDatabase
QString InstalledPackages::readRegistryDatabase()
{
// qDebug() << "start reading registry database";
// "data" is only used at the bottom of this method
QString err;
WindowsRegistry packagesWR;
LONG e;
err = packagesWR.open(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Npackd\\Npackd\\Packages", false, KEY_READ, &e);
QList<InstalledPackageVersion*> ipvs;
if (e == ERROR_FILE_NOT_FOUND || e == ERROR_PATH_NOT_FOUND) {
err = "";
} else if (err.isEmpty()) {
QStringList entries = packagesWR.list(&err);
for (int i = 0; i < entries.count(); ++i) {
QString name = entries.at(i);
int pos = name.lastIndexOf("-");
if (pos <= 0)
continue;
QString packageName = name.left(pos);
if (!Package::isValidName(packageName))
continue;
QString versionName = name.right(name.length() - pos - 1);
Version version;
if (!version.setVersion(versionName))
continue;
WindowsRegistry entryWR;
err = entryWR.open(packagesWR, name, KEY_READ);
if (!err.isEmpty())
continue;
QString p = entryWR.get("Path", &err).trimmed();
if (!err.isEmpty())
continue;
QString dir;
if (p.isEmpty())
dir = "";
else {
QDir d(p);
if (d.exists()) {
dir = p;
} else {
dir = "";
}
}
if (dir.isEmpty()) {
packagesWR.remove(name);
} else {
dir = WPMUtils::normalizePath(dir, false);
InstalledPackageVersion* ipv = new InstalledPackageVersion(
packageName, version, dir);
ipv->detectionInfo = entryWR.get("DetectionInfo", &err);
if (!err.isEmpty()) {
// ignore
ipv->detectionInfo = "";
err = "";
}
if (!ipv->directory.isEmpty()) {
/*
qDebug() << "adding " << ipv->package <<
ipv->version.getVersionString() << "in" <<
ipv->directory;*/
ipvs.append(ipv);
} else {
delete ipv;
}
}
}
}
this->mutex.lock();
qDeleteAll(this->data);
this->data.clear();
for (int i = 0; i < ipvs.count(); i++) {
InstalledPackageVersion* ipv = ipvs.at(i);
this->data.insert(PackageVersion::getStringId(ipv->package,
ipv->version), ipv->clone());
}
this->mutex.unlock();
for (int i = 0; i < ipvs.count(); i++) {
InstalledPackageVersion* ipv = ipvs.at(i);
fireStatusChanged(ipv->package, ipv->version);
}
qDeleteAll(ipvs);
// qDebug() << "stop reading";
return err;
//.........这里部分代码省略.........
示例3: detectOneControlPanelProgram
void ControlPanelThirdPartyPM::detectOneControlPanelProgram(
QList<InstalledPackageVersion*>* installed,
Repository *rep,
const QString& registryPath,
WindowsRegistry& k,
const QString& keyName) const
{
// see http://msdn.microsoft.com/en-us/library/aa372105(v=vs.85).aspx
// find the package name
QString package = keyName;
package.replace('.', '_');
package = WPMUtils::makeValidFullPackageName(
"control-panel." + package);
// find the version number
bool versionFound = false;
Version version;
QString err;
QString version_ = k.get("DisplayVersion", &err);
if (err.isEmpty()) {
if (version.setVersion(version_)) {
version.normalize();
versionFound = true;
}
}
if (!versionFound) {
DWORD major = k.getDWORD("VersionMajor", &err);
if (err.isEmpty()) {
DWORD minor = k.getDWORD("VersionMinor", &err);
if (err.isEmpty())
version.setVersion(major, minor);
else
version.setVersion(major, 0);
version.normalize();
versionFound = true;
}
}
if (!versionFound) {
QString major = k.get("VersionMajor", &err);
if (err.isEmpty()) {
QString minor = k.get("VersionMinor", &err);
if (err.isEmpty()) {
if (version.setVersion(major)) {
versionFound = true;
version.normalize();
}
} else {
if (version.setVersion(major + "." + minor)) {
versionFound = true;
version.normalize();
}
}
}
}
if (!versionFound) {
QString displayName = k.get("DisplayName", &err);
if (err.isEmpty()) {
QStringList parts = displayName.split(' ');
if (parts.count() > 1 && parts.last().contains('.')) {
version.setVersion(parts.last());
version.normalize();
}
}
}
//qDebug() << "InstalledPackages::detectOneControlPanelProgram.0";
QScopedPointer<Package> p(new Package(package, package));
QString title = k.get("DisplayName", &err);
if (!err.isEmpty() || title.isEmpty())
title = keyName;
p->title = title;
p->description = "[Control Panel] " + p->title;
QString url = k.get("URLInfoAbout", &err);
if (!err.isEmpty() || url.isEmpty() || !QUrl(url).isValid())
url = "";
if (url.isEmpty())
url = k.get("URLUpdateInfo", &err);
if (!err.isEmpty() || url.isEmpty() || !QUrl(url).isValid())
url = "";
p->url = url;
p->setChangeLog(k.get("URLUpdateInfo", &err));
if (!err.isEmpty() || !Package::isValidURL(p->getChangeLog()))
p->setChangeLog("");
p->categories.append(QObject::tr("Control panel software"));
QString icon = k.get("DisplayIcon", &err);
if (err.isEmpty())
p->setIcon(WPMUtils::extractIconURL(icon));
// Crystal Icons
// p->icon = "data:image/png;base64,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";
//qDebug() << "CP: adding package " << p.data()->name << p.data()->title;
//.........这里部分代码省略.........
示例4: detectOneCBSPackage
void CBSThirdPartyPM::detectOneCBSPackage(
QList<InstalledPackageVersion*>* installed,
Repository *rep,
const QString& registryPath,
WindowsRegistry& k,
const QString& keyName) const
{
QString err;
QStringList keyNameParts = keyName.split('~');
if (keyNameParts.size() != 5) {
err = "Wrong number of parts";
}
// find the package name
QString package;
if (err.isEmpty()) {
package = keyNameParts.at(0);
package.replace('-', '.');
package = WPMUtils::makeValidFullPackageName(
"cbs." + package);
}
if (err.isEmpty()) {
QString title = keyNameParts.at(0);
title.replace('-', ' ');
QScopedPointer<Package> p(new Package(package, title));
p->categories.append(QObject::tr("Component-Based Servicing"));
rep->savePackage(p.data(), true);
}
// find the version number
Version version;
if (err.isEmpty()) {
if (version.setVersion(keyNameParts.at(4))) {
version.normalize();
} else {
err = "Invalid version number";
}
}
if (err.isEmpty()) {
QScopedPointer<PackageVersion> pv(new PackageVersion(package));
pv->version = version;
PackageVersionFile* pvf = new PackageVersionFile(
".Npackd\\Uninstall.bat", "\r\n"); // TODO
pv->files.append(pvf);
rep->savePackageVersion(pv.data(), true);
}
DWORD state = 0;
if (err.isEmpty()) {
state = k.getDWORD("CurrentState", &err);
}
bool packageInstalled = false;
if (err.isEmpty()) {
if (state & 0x20) {
InstalledPackageVersion* ipv = new InstalledPackageVersion(package,
version, "");
ipv->detectionInfo = "cbs:" + registryPath;
installed->append(ipv);
packageInstalled = true;
}
}
if (!err.isEmpty()) {
qDebug() << keyName << err;
}
if (err.isEmpty()) {
WindowsRegistry updates;
err = updates.open(k, "Updates", KEY_READ);
if (err.isEmpty())
detectOneCBSPackageUpdate(package, installed, rep,
registryPath + "\\Updates",
updates, packageInstalled);
}
}
示例5: test
void App::test()
{
Version a;
Version b;
b.setVersion("1.0.0");
QVERIFY(a == b);
a.setVersion("4.5.6.7.8.9.10");
QVERIFY(a.getVersionString() == "4.5.6.7.8.9.10");
a.setVersion("1.1");
QVERIFY(a == Version(1, 1));
a.setVersion("5.0.0.1");
Version c(a);
QVERIFY(c.getVersionString() == "5.0.0.1");
Version* d = new Version();
d->setVersion(7, 8, 9, 10);
delete d;
a.setVersion(1, 17);
QVERIFY(a.getVersionString() == "1.17");
a.setVersion(2, 18, 3);
QVERIFY(a.getVersionString() == "2.18.3");
a.setVersion(3, 1, 3, 8);
QVERIFY(a.getVersionString() == "3.1.3.8");
a.setVersion("17.2.8.4");
a.prepend(8);
a.prepend(38);
a.prepend(0);
QVERIFY(a.getVersionString() == "0.38.8.17.2.8.4");
a.setVersion("2.8.3");
QVERIFY(a.getVersionString(7) == "2.8.3.0.0.0.0");
a.setVersion("17.2");
QVERIFY(a.getNParts() == 2);
a.setVersion("8.4.0.0.0");
a.normalize();
QVERIFY(a.getVersionString() == "8.4");
QVERIFY(a.isNormalized());
a.setVersion("2.8.7.4.8.9");
b.setVersion("2.8.6.4.8.8");
QVERIFY(a > b);
}