ImagingTools Core SDK
CProductUpdateControllerComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include<ilog/TLoggerCompWrap.h>
7#include<ifile/IFileNameParam.h>
8#include<iprm/IParamsSet.h>
9
10// imtupdate includes
11#include<imtupdate/IProductUpdateController.h>
12#include<imtupdate/IInstallationInfoProvider.h>
13
14namespace imtupdate
15{
20 virtual public IProductUpdateController,
21 public ilog::CLoggerComponentBase
22{
23public:
24 typedef ilog::CLoggerComponentBase BaseClass;
25
26 I_BEGIN_COMPONENT(CProductUpdateControllerComp);
27 I_REGISTER_INTERFACE(IProductUpdateController);
28
29 I_ASSIGN(m_downloaderCompPtr, "ComponentDownloader", "Downloader component", true, "ComponentDownloader");
30 I_ASSIGN(m_installationInfoProviderCompPtr, "InstalationInfoProvider", "Provider, which installation info", true, "InstalationInfoProvider");
31 I_ASSIGN(m_currentApplicationVersionInfoCompPtr, "CurrentApplicationVersion", "The current application version", true, "IVersionInfo");
32 I_ASSIGN(m_versionIdAttrPtr, "ProductVersionId", "Binary ID of the product version", true, 2000);
33 I_ASSIGN(m_additionalParamsInfoCompPtr, "AdditionalParameters", "Additional parameters to specify behaviour for the product", true, "AdditionalParameters");
34 I_END_COMPONENT;
35
37
38 // reimplemented (IProductUpdateController)
39 virtual bool CheckForNewVersion(quint32* releaseVersion = nullptr) const override;
40 virtual bool InstallVersion(qint32 version = -1) override;
41 virtual IDownloader::DownloadStatus DownloadNewVersion(ibase::IProgressManager* progressManagerPtr = nullptr) override;
42 virtual bool FinishAppInstallation(iprm::IParamsSet& params, bool* isRestartRequired = nullptr) override;
43 virtual bool DelayUpdate(qint32 version = -1) override;
44 virtual bool HasDelayedUpdate() const override;
45 virtual bool InstallDelayedUpdate() override;
46
47protected:
48 QByteArray GetHashForFile(const QString &filePath) const;
49
50 virtual bool FinishAppInstallationForWindows(iprm::IParamsSet& params) const;
54 qlonglong _winProcessPIDByName(const QString &pName) const;
55 bool _winTerminateProcess(const QString &pName) const;
56 bool _winTerminateProcess(const qlonglong &pID) const;
57 bool _winProcessIsRunning(const qlonglong &pID) const;
58 bool _winProcessIsRunning(const QString &pName) const;
59
60 // reimplemented (icomp::CComponentBase)
61 virtual void OnComponentCreated() override;
62
63private:
64 I_REF(IDownloader, m_downloaderCompPtr);
65 I_REF(IInstallationInfoProvider, m_installationInfoProviderCompPtr);
66 I_REF(iser::IVersionInfo, m_currentApplicationVersionInfoCompPtr);
67 I_REF(iprm::IParamsSet, m_additionalParamsInfoCompPtr);
68
69 I_ATTR(int, m_versionIdAttrPtr);
70
71 mutable QString m_downloadedFilePath;
72 bool m_isDownloadInProgress;
73};
74
75
76}//namespace imtupdate
qlonglong _winProcessPIDByName(const QString &pName) const