mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-16 21:15:15 +00:00
Automatically generate manifest file and link
Automatically generate and link manifest file to EXE if a version info value is set. The XML file will use CompanyName, ProductName, and FileDescription as values. This will allow for use of Common Controls v6.0 without keeping a manifest file in the same directory as the executable.
This commit is contained in:
parent
a0c525aafd
commit
272b68ddcf
105
source/qb64.bas
105
source/qb64.bas
|
@ -11979,36 +11979,81 @@ IF os$ = "WIN" THEN
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF VersionInfoSet THEN
|
IF VersionInfoSet THEN
|
||||||
iconfilehandle = FREEFILE
|
manifest = FreeFile
|
||||||
OPEN tmpdir$ + "icon.rc" FOR APPEND AS #iconfilehandle
|
Open tmpdir$ + file$ + extension$ + ".manifest" For Output As #manifest
|
||||||
PRINT #iconfilehandle, ""
|
Print #manifest, "<?xml version=" + QuotedFilename("1.0") + " encoding=" + QuotedFilename("UTF-8") + " standalone=" + QuotedFilename("yes") + "?>"
|
||||||
PRINT #iconfilehandle, "1 VERSIONINFO"
|
Print #manifest, "<assembly xmlns=" + QuotedFilename("urn:schemas-microsoft-com:asm.v1") + " manifestVersion=" + QuotedFilename("1.0") + ">"
|
||||||
IF LEN(viFileVersionNum$) THEN PRINT #iconfilehandle, "FILEVERSION "; viFileVersionNum$
|
Print #manifest, "<assemblyIdentity"
|
||||||
IF LEN(viProductVersionNum$) THEN PRINT #iconfilehandle, "PRODUCTVERSION "; viProductVersionNum$
|
Print #manifest, " version=" + QuotedFilename("1.0.0.0")
|
||||||
PRINT #iconfilehandle, "BEGIN"
|
Print #manifest, " processorArchitecture=" + QuotedFilename("*")
|
||||||
PRINT #iconfilehandle, " BLOCK " + QuotedFilename$("StringFileInfo")
|
Print #manifest, " name=" + QuotedFilename(viCompanyName$ + "." + viProductName$ + "." + viProductName$)
|
||||||
PRINT #iconfilehandle, " BEGIN"
|
Print #manifest, " type=" + QuotedFilename("win32")
|
||||||
PRINT #iconfilehandle, " BLOCK " + QuotedFilename$("040904E4")
|
Print #manifest, "/>"
|
||||||
PRINT #iconfilehandle, " BEGIN"
|
Print #manifest, "<description>" + viFileDescription$ + "</description>"
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("CompanyName") + "," + QuotedFilename$(viCompanyName$ + "\0")
|
Print #manifest, "<dependency>"
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("FileDescription") + "," + QuotedFilename$(viFileDescription$ + "\0")
|
Print #manifest, " <dependentAssembly>"
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("FileVersion") + "," + QuotedFilename$(viFileVersion$ + "\0")
|
Print #manifest, " <assemblyIdentity"
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("InternalName") + "," + QuotedFilename$(viInternalName$ + "\0")
|
Print #manifest, " type=" + QuotedFilename("win32")
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("LegalCopyright") + "," + QuotedFilename$(viLegalCopyright$ + "\0")
|
Print #manifest, " name=" + QuotedFilename("Microsoft.Windows.Common-Controls")
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("LegalTrademarks") + "," + QuotedFilename$(viLegalTrademarks$ + "\0")
|
Print #manifest, " version=" + QuotedFilename("6.0.0.0")
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("OriginalFilename") + "," + QuotedFilename$(viOriginalFilename$ + "\0")
|
Print #manifest, " processorArchitecture=" + QuotedFilename("*")
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("ProductName") + "," + QuotedFilename$(viProductName$ + "\0")
|
Print #manifest, " publicKeyToken=" + QuotedFilename("6595b64144ccf1df")
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("ProductVersion") + "," + QuotedFilename$(viProductVersion$ + "\0")
|
Print #manifest, " language=" + QuotedFilename("*")
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("Comments") + "," + QuotedFilename$(viComments$ + "\0")
|
Print #manifest, " />"
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("Web") + "," + QuotedFilename$(viWeb$ + "\0")
|
Print #manifest, " </dependentAssembly>"
|
||||||
PRINT #iconfilehandle, " END"
|
Print #manifest, "</dependency>"
|
||||||
PRINT #iconfilehandle, " END"
|
Print #manifest, "</assembly>"
|
||||||
PRINT #iconfilehandle, " BLOCK " + QuotedFilename$("VarFileInfo")
|
Close #manifest
|
||||||
PRINT #iconfilehandle, " BEGIN"
|
|
||||||
PRINT #iconfilehandle, " VALUE " + QuotedFilename$("Translation") + ", 0x409, 0x04E4"
|
manifestembed = FreeFile
|
||||||
PRINT #iconfilehandle, " END"
|
Open tmpdir$ + "manifest.h" For Output As #manifestembed
|
||||||
PRINT #iconfilehandle, "END"
|
Print #manifestembed, "#ifndef RESOURCE_H"
|
||||||
CLOSE #iconfilehandle
|
Print #manifestembed, "#define RESOURCE_H"
|
||||||
|
Print #manifestembed, "#ifdef __cplusplus"
|
||||||
|
Print #manifestembed, "extern " + QuotedFilename("C") + " {"
|
||||||
|
Print #manifestembed, "#endif"
|
||||||
|
Print #manifestembed, "#ifdef __cplusplus"
|
||||||
|
Print #manifestembed, "}"
|
||||||
|
Print #manifestembed, "#endif"
|
||||||
|
Print #manifestembed, "#endif /* RESOURCE_H */"
|
||||||
|
Print #manifestembed, "#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 /*Defined manifest file*/"
|
||||||
|
Print #manifestembed, "#define RT_MANIFEST 24"
|
||||||
|
Close #manifestembed
|
||||||
|
|
||||||
|
iconfilehandle = FreeFile
|
||||||
|
Open tmpdir$ + "icon.rc" For Append As #iconfilehandle
|
||||||
|
Print #iconfilehandle, ""
|
||||||
|
Print #iconfilehandle, "#include " + QuotedFilename("manifest.h")
|
||||||
|
Print #iconfilehandle, ""
|
||||||
|
Print #iconfilehandle, "CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST " + QuotedFilename(file$ + extension$ + ".manifest")
|
||||||
|
Print #iconfilehandle, ""
|
||||||
|
Print #iconfilehandle, "1 VERSIONINFO"
|
||||||
|
If Len(viFileVersionNum$) Then Print #iconfilehandle, "FILEVERSION "; viFileVersionNum$
|
||||||
|
If Len(viProductVersionNum$) Then Print #iconfilehandle, "PRODUCTVERSION "; viProductVersionNum$
|
||||||
|
Print #iconfilehandle, "BEGIN"
|
||||||
|
Print #iconfilehandle, " BLOCK " + QuotedFilename$("StringFileInfo")
|
||||||
|
Print #iconfilehandle, " BEGIN"
|
||||||
|
Print #iconfilehandle, " BLOCK " + QuotedFilename$("040904E4")
|
||||||
|
Print #iconfilehandle, " BEGIN"
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("CompanyName") + "," + QuotedFilename$(viCompanyName$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("FileDescription") + "," + QuotedFilename$(viFileDescription$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("FileVersion") + "," + QuotedFilename$(viFileVersion$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("InternalName") + "," + QuotedFilename$(viInternalName$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("LegalCopyright") + "," + QuotedFilename$(viLegalCopyright$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("LegalTrademarks") + "," + QuotedFilename$(viLegalTrademarks$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("OriginalFilename") + "," + QuotedFilename$(viOriginalFilename$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("ProductName") + "," + QuotedFilename$(viProductName$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("ProductVersion") + "," + QuotedFilename$(viProductVersion$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("Comments") + "," + QuotedFilename$(viComments$ + "\0")
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("Web") + "," + QuotedFilename$(viWeb$ + "\0")
|
||||||
|
Print #iconfilehandle, " END"
|
||||||
|
Print #iconfilehandle, " END"
|
||||||
|
Print #iconfilehandle, " BLOCK " + QuotedFilename$("VarFileInfo")
|
||||||
|
Print #iconfilehandle, " BEGIN"
|
||||||
|
Print #iconfilehandle, " VALUE " + QuotedFilename$("Translation") + ", 0x409, 0x04E4"
|
||||||
|
Print #iconfilehandle, " END"
|
||||||
|
Print #iconfilehandle, "END"
|
||||||
|
Close #iconfilehandle
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF ExeIconSet OR VersionInfoSet THEN
|
IF ExeIconSet OR VersionInfoSet THEN
|
||||||
|
|
Loading…
Reference in a new issue