mirror of
https://github.com/SabreTools/BinaryObjectScanner.git
synced 2026-02-18 05:56:03 +00:00
Refactor Setup Factory detection (#115)
* Refactor Setup Factory detection * Address Setup Factory PR comments * Fix whitespace
This commit is contained in:
@@ -19,14 +19,20 @@ namespace BurnOutSharp.PackerType
|
||||
if (sections == null)
|
||||
return null;
|
||||
|
||||
// Known to detect versions 7.0.5.1 - 9.1.0.0
|
||||
string name = Utilities.GetLegalCopyright(pex);
|
||||
if (!string.IsNullOrWhiteSpace(name) && name.StartsWith("Setup Factory", StringComparison.OrdinalIgnoreCase))
|
||||
if (!string.IsNullOrWhiteSpace(name) && name.StartsWith("Setup Engine", StringComparison.OrdinalIgnoreCase))
|
||||
return $"Setup Factory {GetVersion(pex)}";
|
||||
|
||||
name = Utilities.GetProductName(pex);
|
||||
if (!string.IsNullOrWhiteSpace(name) && name.StartsWith("Setup Factory", StringComparison.OrdinalIgnoreCase))
|
||||
return $"Setup Factory {GetVersion(pex)}";
|
||||
|
||||
// Known to detect version 5.0.1 - 6.0.1.3
|
||||
name = Utilities.GetFileDescription(pex);
|
||||
if (!string.IsNullOrWhiteSpace(name) && name.StartsWith("Setup Factory", StringComparison.OrdinalIgnoreCase))
|
||||
return $"Setup Factory {GetVersion(pex)}";
|
||||
|
||||
// Longer version of the check that can be used if false positves become an issue:
|
||||
// "Setup Factory is a trademark of Indigo Rose Corporation"
|
||||
|
||||
@@ -55,16 +61,21 @@ namespace BurnOutSharp.PackerType
|
||||
|
||||
private string GetVersion(PortableExecutable pex)
|
||||
{
|
||||
// Check the manifest version first
|
||||
string version = Utilities.GetManifestVersion(pex);
|
||||
// Check the product version first
|
||||
string version = Utilities.GetProductVersion(pex);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
return version;
|
||||
|
||||
|
||||
// Then check the file version
|
||||
version = Utilities.GetFileVersion(pex);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
return version;
|
||||
|
||||
// Then check the manifest version
|
||||
version = Utilities.GetManifestVersion(pex);
|
||||
if (!string.IsNullOrEmpty(version))
|
||||
return version;
|
||||
|
||||
return "(Unknown Version)";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,9 +237,9 @@ namespace BurnOutSharp.Tools
|
||||
if (!string.IsNullOrWhiteSpace(version))
|
||||
return version.Replace(", ", ".");
|
||||
|
||||
version = GetResourceString(pex, "ProductVersion");
|
||||
version = GetProductVersion(pex);
|
||||
if (!string.IsNullOrWhiteSpace(version))
|
||||
return version.Replace(", ", ".");
|
||||
return version;
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -366,6 +366,13 @@ namespace BurnOutSharp.Tools
|
||||
/// <returns>Product name string, null on error</returns>
|
||||
public static string GetProductName(PortableExecutable pex) => GetResourceString(pex, "ProductName");
|
||||
|
||||
/// <summary>
|
||||
/// Get the product name as reported by the filesystem
|
||||
/// </summary>
|
||||
/// <param name="pex">PortableExecutable representing the file contents</param>
|
||||
/// <returns>Product version string, null on error</returns>
|
||||
public static string GetProductVersion(PortableExecutable pex) => GetResourceString(pex, "ProductVersion")?.Replace(", ", ".");
|
||||
|
||||
/// <summary>
|
||||
/// Find resource data in a ResourceSection, if possible
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user