Some manifest issues

The behaviour described in the bug report is either by design, or would be far too complex/time-consuming to be changed

Moderators: Hacker, petermad, Stefan2, white

Post Reply
User avatar
MarcinW
Power Member
Power Member
Posts: 852
Joined: 2012-01-23, 15:58 UTC
Location: Poland

Some manifest issues

Post by *MarcinW »

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
User avatar
MarcinW
Power Member
Power Member
Posts: 852
Joined: 2012-01-23, 15:58 UTC
Location: Poland

Post by *MarcinW »

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
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50550
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

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.
Author of Total Commander
https://www.ghisler.com
User avatar
MarcinW
Power Member
Power Member
Posts: 852
Joined: 2012-01-23, 15:58 UTC
Location: Poland

Post by *MarcinW »

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:
<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>
but there should be:
<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>
This second form exists in all other TC executables and also in this example from Google.


Regards
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50550
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

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.
Author of Total Commander
https://www.ghisler.com
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50550
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

7) should be fixed now, please check it!
Author of Total Commander
https://www.ghisler.com
User avatar
MarcinW
Power Member
Power Member
Posts: 852
Joined: 2012-01-23, 15:58 UTC
Location: Poland

Post by *MarcinW »

Due to personal reasons, I can't verify any fixes now. I'll be back as soon as possible, probably in few days.

Regards
User avatar
MarcinW
Power Member
Power Member
Posts: 852
Joined: 2012-01-23, 15:58 UTC
Location: Poland

Post by *MarcinW »

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:

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
User avatar
petermad
Power Member
Power Member
Posts: 16032
Joined: 2003-02-05, 20:24 UTC
Location: Denmark
Contact:

Post by *petermad »

Code: Select all

SFXHEAD.SFX                  Ghisler.TotalCommander.SFX              Total Commander Self-extracting Archive 
Should rather be:

Code: Select all

SFXHEAD.SFX                  Ghisler.TotalCommander.SFX              Total Commander Self-extracting Archive Module 
It is not an archive itself
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
User avatar
MarcinW
Power Member
Power Member
Posts: 852
Joined: 2012-01-23, 15:58 UTC
Location: Poland

Post by *MarcinW »

petermad wrote:It is not an archive itself
But it's used as an archive header, when TC creates an SFX archive. So finally it's an Archive.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50550
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

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
Post Reply