summaryrefslogtreecommitdiff
path: root/plugins/PluginUpdater
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-05-27 22:59:43 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-05-27 23:00:45 +0300
commite06a3bd4b50fd001f4d0d49c10a0c4b988c563a0 (patch)
treeca8d3fba504b185adf1928b998935f8345d66cfd /plugins/PluginUpdater
parent6281960ec0d178935ca2881aff052a9eae5da337 (diff)
comparison of MIRANDA_VERSION_COREVERSION solves the problem of plugins who differ only in a build number
Diffstat (limited to 'plugins/PluginUpdater')
-rw-r--r--plugins/PluginUpdater/res/Version.rc2
-rw-r--r--plugins/PluginUpdater/src/checksum.cpp31
2 files changed, 8 insertions, 25 deletions
diff --git a/plugins/PluginUpdater/res/Version.rc b/plugins/PluginUpdater/res/Version.rc
index 6b47621286..832ac546a5 100644
--- a/plugins/PluginUpdater/res/Version.rc
+++ b/plugins/PluginUpdater/res/Version.rc
@@ -21,7 +21,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
VS_VERSION_INFO VERSIONINFO
FILEVERSION __FILEVERSION_STRING
- PRODUCTVERSION MIRANDA_VERSION_FILEVERSION
+ PRODUCTVERSION MIRANDA_VERSION_COREVERSION
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
diff --git a/plugins/PluginUpdater/src/checksum.cpp b/plugins/PluginUpdater/src/checksum.cpp
index 73d8a30734..19f9da9ece 100644
--- a/plugins/PluginUpdater/src/checksum.cpp
+++ b/plugins/PluginUpdater/src/checksum.cpp
@@ -17,7 +17,6 @@
#define DEBUG_REALLOCS 1
int debug = 0;
-DWORD dwVersion = 0;
#pragma comment(lib, "version.lib")
@@ -51,29 +50,25 @@ struct MFileMapping
}
};
-static void PatchResourcesDirectory(PIMAGE_RESOURCE_DIRECTORY pIRD, PBYTE pBase, DWORD dwType);
+static void PatchResourcesDirectory(PIMAGE_RESOURCE_DIRECTORY pIRD, PBYTE pBase);
-static void PatchResourceEntry(PIMAGE_RESOURCE_DIRECTORY_ENTRY pIRDE, PBYTE pBase, DWORD dwType)
+static void PatchResourceEntry(PIMAGE_RESOURCE_DIRECTORY_ENTRY pIRDE, PBYTE pBase)
{
if (pIRDE->DataIsDirectory)
- PatchResourcesDirectory(PIMAGE_RESOURCE_DIRECTORY(pBase + pIRDE->OffsetToDirectory), pBase, dwType == 0 ? pIRDE->Name : dwType);
- else if (dwType == 16) {
- PIMAGE_RESOURCE_DATA_ENTRY pItem = PIMAGE_RESOURCE_DATA_ENTRY(pBase + pIRDE->OffsetToData);
- dwVersion = pItem->OffsetToData;
- }
+ PatchResourcesDirectory(PIMAGE_RESOURCE_DIRECTORY(pBase + pIRDE->OffsetToDirectory), pBase);
}
-static void PatchResourcesDirectory(PIMAGE_RESOURCE_DIRECTORY pIRD, PBYTE pBase, DWORD dwType)
+static void PatchResourcesDirectory(PIMAGE_RESOURCE_DIRECTORY pIRD, PBYTE pBase)
{
UINT i;
pIRD->TimeDateStamp = 0;
PIMAGE_RESOURCE_DIRECTORY_ENTRY pIRDE = PIMAGE_RESOURCE_DIRECTORY_ENTRY(pIRD + 1);
for (i = 0; i < pIRD->NumberOfNamedEntries; i++, pIRDE++)
- PatchResourceEntry(pIRDE, pBase, dwType);
+ PatchResourceEntry(pIRDE, pBase);
for (i = 0; i < pIRD->NumberOfIdEntries; i++, pIRDE++)
- PatchResourceEntry(pIRDE, pBase, dwType);
+ PatchResourceEntry(pIRDE, pBase);
}
__forceinline bool Contains(PIMAGE_SECTION_HEADER pISH, DWORD address, DWORD size = 0)
@@ -198,21 +193,9 @@ LBL_NotPE:
// patch resources
if (resSize > 0 && Contains(pISH, resAddr, resSize)) {
- dwVersion = 0;
-
DWORD shift = resAddr - pISH->VirtualAddress + pISH->PointerToRawData;
IMAGE_RESOURCE_DIRECTORY *pIRD = (IMAGE_RESOURCE_DIRECTORY*)(map.ptr + shift);
- PatchResourcesDirectory(pIRD, map.ptr + shift, 0);
-
- // patch version
- if (dwVersion) {
- shift = dwVersion - pISH->VirtualAddress + pISH->PointerToRawData;
-
- UINT blockSize;
- VS_FIXEDFILEINFO *vsffi;
- VerQueryValue(map.ptr + shift, L"\\", (PVOID*)&vsffi, &blockSize);
- vsffi->dwProductVersionLS = vsffi->dwProductVersionMS = 0;
- }
+ PatchResourcesDirectory(pIRD, map.ptr + shift);
}
// rebase to zero address