All 5 phases of the open-source Decal rebuild: Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil) Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters - Decal.Core, DecalControls, DecalRender, D3DService Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL Phase 4: DenAgent WinForms tray application Phase 5: WiX installer and build script 25 C# projects building with 0 errors. Native C++ projects require VS 2022 + Windows SDK (x86). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
70 lines
No EOL
1.5 KiB
C++
70 lines
No EOL
1.5 KiB
C++
#ifndef __AUTOUPDATE_H__
|
|
#define __AUTOUPDATE_H__
|
|
|
|
class DownloadAgent {
|
|
public:
|
|
static bool downloadFile(std::string remoteFile, std::string localFile);
|
|
|
|
DownloadAgent();
|
|
|
|
void scheduleDownload(std::string remoteFile, std::string localFile);
|
|
bool runDownloads();
|
|
|
|
private:
|
|
struct DownloadSlot {
|
|
std::string remoteFile, localFile;
|
|
};
|
|
|
|
std::list<DownloadSlot> m_ScheduledDownloads;
|
|
};
|
|
|
|
enum AutoUpdateType {
|
|
AU_TYPE_XML,
|
|
AU_TYPE_DLL,
|
|
AU_TYPE_BETADLL
|
|
};
|
|
|
|
class UpdateRequirement
|
|
{
|
|
public:
|
|
UpdateRequirement(std::string File, std::string Version):
|
|
sFile(File), sVers(Version) { }
|
|
std::string sFile;
|
|
std::string sVers;
|
|
};
|
|
|
|
class AutoUpdateSource {
|
|
public:
|
|
AutoUpdateSource(std::string decalPath, AutoUpdateType type, std::string localTarget, std::string remoteSource, std::string requiredVersion);
|
|
|
|
bool needsUpdating();
|
|
std::string getSource();
|
|
std::string getDestination();
|
|
AutoUpdateType getType();
|
|
bool isOutDatedVersion(std::string sFile, int nMajor, int nMinor, int nPatch, int nBuild);
|
|
void AddRequirement(UpdateRequirement reqUpdate);
|
|
|
|
private:
|
|
std::string m_LocalTarget;
|
|
std::string m_RemoteSource;
|
|
std::string m_RequiredVersion;
|
|
std::string m_DecalDir;
|
|
AutoUpdateType m_Type;
|
|
std::vector<UpdateRequirement> m_Requirements;
|
|
};
|
|
|
|
class AutoUpdate {
|
|
public:
|
|
AutoUpdate(std::string decalDir);
|
|
|
|
bool initialiseFromXML(std::string remoteXML);
|
|
bool needsUpdate();
|
|
bool performUpdate();
|
|
|
|
private:
|
|
std::string m_LocalXML, m_RemoteXML;
|
|
std::string m_DecalDir;
|
|
std::list<AutoUpdateSource> m_RemoteSources;
|
|
};
|
|
|
|
#endif |