Some manifest issues
Moderators: Hacker, petermad, Stefan2, white
Some manifest issues
I looked at TC manifests (in *.MANIFEST, *.exe and *.sfx files) and found some issues (TC 9.0 beta3).
1) Tcmdx64.exe contains processorArchitecture="x86" in its manifest. It's a mistake and should be changed to processorArchitecture="amd64".
2) tc900x32_b3.exe, tc900x64_b3.exe, tc900x32_64_b3.exe (TC installers), Tcuninst.exe, Tcunin64.exe (TC uninstallers), TOTALCMD.EXE.MANIFEST and TOTALCMD64.EXE.MANIFEST define requestedExecutionLevel in urn:schemas-microsoft-com:asm.v3 (version 3) namespace.
Sfxhead.sfx, Tcmadmin.exe, Tcmadm64.exe, Tcmdx32.exe, Tcmdx64.exe and TcUsbRun.exe define requestedExecutionLevel in urn:schemas-microsoft-com:asm.v2 (version 2) namespace.
Since v2 is a valid (MSDN blog) and more generic namespace, maybe it would be better to change all v3 to v2 for requestedExecutionLevel?
3) tc900x32_b3.exe, tc900x64_b3.exe, tc900x32_64_b3.exe (TC installers), TOTALCMD.EXE.MANIFEST and TOTALCMD64.EXE.MANIFEST contain supportedOS values for Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10. This is OK.
Tcuninst.exe, Tcunin64.exe (TC uninstallers) and TcUsbRun.exe contain supportedOS values only for Windows 7. This is probably not intentional and should be updated.
Tcmadmin.exe, Tcmadm64.exe, Tcmdx32.exe, Tcmdx64.exe and Sfxhead.sfx have no supportedOS values. I don't know if this is intentional or not.
4) Tcunin64.exe (64-bit TC uninstaller) has the dpiAware declaration, but Tcuninst.exe (32-bit TC uninstaller) doesn't. It seems to be a mistake and that dpiAware should be added also to Tcuninst.exe.
5) In opposite to all other manifests, TOTALCMD64.EXE.MANIFEST contains BOM (Byte-Order-Mark, 0xEF 0xBB 0xBF for UTF-8) at the beginning of the file. Although it's not a bug, I suppose it's not intentional. Because encoding is defined in the XML header, BOM is not required (more info). Since - if possible - it's better to have same things defined in one place (XML header) instead of two places (BOM + XML header), and because some problems with BOM + XML are reported somewhere around the internet, maybe it would be better to remove the BOM?
Regards
1) Tcmdx64.exe contains processorArchitecture="x86" in its manifest. It's a mistake and should be changed to processorArchitecture="amd64".
2) tc900x32_b3.exe, tc900x64_b3.exe, tc900x32_64_b3.exe (TC installers), Tcuninst.exe, Tcunin64.exe (TC uninstallers), TOTALCMD.EXE.MANIFEST and TOTALCMD64.EXE.MANIFEST define requestedExecutionLevel in urn:schemas-microsoft-com:asm.v3 (version 3) namespace.
Sfxhead.sfx, Tcmadmin.exe, Tcmadm64.exe, Tcmdx32.exe, Tcmdx64.exe and TcUsbRun.exe define requestedExecutionLevel in urn:schemas-microsoft-com:asm.v2 (version 2) namespace.
Since v2 is a valid (MSDN blog) and more generic namespace, maybe it would be better to change all v3 to v2 for requestedExecutionLevel?
3) tc900x32_b3.exe, tc900x64_b3.exe, tc900x32_64_b3.exe (TC installers), TOTALCMD.EXE.MANIFEST and TOTALCMD64.EXE.MANIFEST contain supportedOS values for Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10. This is OK.
Tcuninst.exe, Tcunin64.exe (TC uninstallers) and TcUsbRun.exe contain supportedOS values only for Windows 7. This is probably not intentional and should be updated.
Tcmadmin.exe, Tcmadm64.exe, Tcmdx32.exe, Tcmdx64.exe and Sfxhead.sfx have no supportedOS values. I don't know if this is intentional or not.
4) Tcunin64.exe (64-bit TC uninstaller) has the dpiAware declaration, but Tcuninst.exe (32-bit TC uninstaller) doesn't. It seems to be a mistake and that dpiAware should be added also to Tcuninst.exe.
5) In opposite to all other manifests, TOTALCMD64.EXE.MANIFEST contains BOM (Byte-Order-Mark, 0xEF 0xBB 0xBF for UTF-8) at the beginning of the file. Although it's not a bug, I suppose it's not intentional. Because encoding is defined in the XML header, BOM is not required (more info). Since - if possible - it's better to have same things defined in one place (XML header) instead of two places (BOM + XML header), and because some problems with BOM + XML are reported somewhere around the internet, maybe it would be better to remove the BOM?
Regards
1) Fixed
2) Not fixed (but it's not really a bug, but a potential compatibility issue)
3) Fixed, with the exception of Sfxhead.sfx, which contains no supportedOS value - but it's probably intentional
4) Fixed
5) Fixed
6) New problem arised: Tcmdx32.exe, instead of manifest resource with ID = RT_MANIFEST (RT_MANIFEST constant is equal 24), has the named resource now - with "RT_MANIFEST" name. Most probably it's a simple mistake in a resource .RC file. As a result, the manifest can't be found by the operating system.
Regards
2) Not fixed (but it's not really a bug, but a potential compatibility issue)
3) Fixed, with the exception of Sfxhead.sfx, which contains no supportedOS value - but it's probably intentional
4) Fixed
5) Fixed
6) New problem arised: Tcmdx32.exe, instead of manifest resource with ID = RT_MANIFEST (RT_MANIFEST constant is equal 24), has the named resource now - with "RT_MANIFEST" name. Most probably it's a simple mistake in a resource .RC file. As a result, the manifest can't be found by the operating system.
Regards
- ghisler(Author)
- Site Admin
- Posts: 50550
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
2) I didn't change that because I remember vaguely that I changed it from v2 to v3 for some programs because it crashed with v2 on some older Windows versions. Better not change it when it actually works with both.
6) I will check it, thanks.
6) I will check it, thanks.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
2) Sfxhead.sfx, Tcmdx32.exe, Tcmdx64.exe and TcUsbRun.exe have requestedExecutionLevel = asInvoker and asm.v2.
TOTALCMD.EXE.MANIFEST and TOTALCMD64.EXE.MANIFEST have also requestedExecutionLevel = asInvoker, but asm.v3.
All executables with requestedExecutionLevel = asInvoker should either have asm.v2 or asm.v3. You wrote that asm.v2 caused some problems - so executables from the first group shoud be updated to asm.v3.
6) Fixed.
7) One more problem found: In tc900x64_b5.exe (64-bit TC installer), there is:
Regards
TOTALCMD.EXE.MANIFEST and TOTALCMD64.EXE.MANIFEST have also requestedExecutionLevel = asInvoker, but asm.v3.
All executables with requestedExecutionLevel = asInvoker should either have asm.v2 or asm.v3. You wrote that asm.v2 caused some problems - so executables from the first group shoud be updated to asm.v3.
6) Fixed.
7) One more problem found: In tc900x64_b5.exe (64-bit TC installer), there is:
but there should be:<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
...
</application>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</compatibility>
This second form exists in all other TC executables and also in this example from Google.<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
...
</application>
</compatibility>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
Regards
- ghisler(Author)
- Site Admin
- Posts: 50550
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
2) I prefer to keep it as it is now, as long as it isn't causing anyone problems.
7) Thanks, I will fix it.
7) Thanks, I will fix it.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
- ghisler(Author)
- Site Admin
- Posts: 50550
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
7) Fixed.
I've got some final notice: there is a bit of mess in the names and descriptions, contained in manifests.
Microsoft suggests the following format for names: Organization.Division.Name (in other words: CompanyName.ProductName.ModuleName).
Here are the current manifest contents:
If I could make some suggestions:
Regards
I've got some final notice: there is a bit of mess in the names and descriptions, contained in manifests.
Microsoft suggests the following format for names: Organization.Division.Name (in other words: CompanyName.ProductName.ModuleName).
Here are the current manifest contents:
Code: Select all
File Name Description
SFXHEAD.SFX Ghisler.sfx.exe Self-extracting installer (?)
tc900x32_64_b8.exe Ghisler.Totalcmd.install Total Commander 32 install (?)
tc900x32_b8.exe Ghisler.Totalcmd.install Total Commander 32 install
tc900x64_b8.exe Ghisler.Totalcmd.install Total Commander 64 install
TCMADM64.EXE Ghisler.tcmadmin.exe Total Commander Admin Module
TCMADMIN.EXE Ghisler.tcmadmin.exe Total Commander Admin Module
TCMDX32.EXE Ghisler.tcmadmin.exe Total Commander Admin Module (?)
TCMDX64.EXE Ghisler.tcmadmin.exe Total Commander Admin Module (?)
TCUNIN64.EXE Ghisler.Wincmd.Tcuninst Uninstaller for Totalcmd
TCUNINST.EXE Ghisler.Wincmd.Tcuninst Uninstaller for Totalcmd
TcUsbRun.exe Ghisler.tcusbrun.exe Total Commander USB Autorun handler
TOTALCMD.EXE Ghisler.Totalcmd.exe Total Commander 32
TOTALCMD.EXE.MANIFEST Ghisler.Totalcmd.exe Total Commander 32
TOTALCMD64.EXE Ghisler.Totalcmd64.exe Total Commander 64
TOTALCMD64.EXE.MANIFEST Ghisler.Totalcmd64.exe Total Commander 64
If I could make some suggestions:
Code: Select all
File Name Description
SFXHEAD.SFX Ghisler.TotalCommander.SFX Total Commander Self-extracting Archive
tc900x32_64_b8.exe Ghisler.TotalCommander.Installer Total Commander Installer
tc900x32_b8.exe Ghisler.TotalCommander.Installer Total Commander Installer
tc900x64_b8.exe Ghisler.TotalCommander.Installer Total Commander Installer
TCMADM64.EXE Ghisler.TotalCommander.Admin Total Commander Admin Module
TCMADMIN.EXE Ghisler.TotalCommander.Admin Total Commander Admin Module
TCMDX32.EXE Ghisler.TotalCommander.Menu Total Commander Context Menu Handler
TCMDX64.EXE Ghisler.TotalCommander.Menu Total Commander Context Menu Handler
TCUNIN64.EXE Ghisler.TotalCommander.Uninstaller Total Commander Uninstaller
TCUNINST.EXE Ghisler.TotalCommander.Uninstaller Total Commander Uninstaller
TcUsbRun.exe Ghisler.TotalCommander.USBAutorun Total Commander USB Autorun Handler
TOTALCMD.EXE Ghisler.TotalCommander.Main Total Commander Main Module
TOTALCMD.EXE.MANIFEST Ghisler.TotalCommander.Main Total Commander Main Module
TOTALCMD64.EXE Ghisler.TotalCommander.Main Total Commander Main Module
TOTALCMD64.EXE.MANIFEST Ghisler.TotalCommander.Main Total Commander Main Module
Regards
Code: Select all
SFXHEAD.SFX Ghisler.TotalCommander.SFX Total Commander Self-extracting Archive
Code: Select all
SFXHEAD.SFX Ghisler.TotalCommander.SFX Total Commander Self-extracting Archive Module
License #524 (1994)
Danish Total Commander Translator
TC 11.51 32+64bit on Win XP 32bit & Win 7, 8.1 & 10 (22H2) 64bit, 'Everything' 1.5.0.1391a
TC 3.60b4 on Android 6, 13, 14
TC Extended Menus | TC Languagebar | TC Dark Help | PHSM-Calendar
Danish Total Commander Translator
TC 11.51 32+64bit on Win XP 32bit & Win 7, 8.1 & 10 (22H2) 64bit, 'Everything' 1.5.0.1391a
TC 3.60b4 on Android 6, 13, 14
TC Extended Menus | TC Languagebar | TC Dark Help | PHSM-Calendar
- ghisler(Author)
- Site Admin
- Posts: 50550
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
I prefer not to change the names now. These are only suggestions by Microsoft, not requirements. Developers are free to set any name.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com