Manifest for 64 Bit

Post Reply
User avatar
Jimmy
Posts: 1740
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany
Has thanked: 2 times

Manifest for 64 Bit

Post by Jimmy »

hi,

i try to use Manifest for 64 Bit (MSVC)
i got ICON / BITMAP in App but "Description" is almost empty under 64 Bit ...

Code: Select all | Expand

#include <windows.h>
#include <commctrl.h>

#ifndef __64__
  1 24 "WindowsXP.Manifest"
//  1 24 "Windows10.Manifest"
#else
  1 24 "WindowsXP.Manifest64"
#endif

//
LANGUAGE 0, SUBLANG_NEUTRAL
1 VERSIONINFO
    FILEVERSION     0,1,1,0
    PRODUCTVERSION  2,1,1,0
    FILEOS          VOS_NT_WINDOWS32
    FILETYPE        VFT_APP
    FILESUBTYPE     VFT2_UNKNOWN
    FILEFLAGSMASK   0x0000003F
    FILEFLAGS       0x00000000
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040704B0"
        {
            VALUE "Comments", "Comments"
            VALUE "CompanyName", "Company"
            VALUE "FileDescription", "Description"
            VALUE "FileVersion", "2, 1, 1, 0"
            VALUE "InternalName", "Internal"
            VALUE "LegalCopyright", "Copyright 1983-2022"
            VALUE "LegalTrademarks", "Trademarks"
            VALUE "OriginalFilename", "Original"
            VALUE "PrivateBuild", "Build"
            VALUE "ProductName", "Product"
            VALUE "ProductVersion", "2, 1, 1, 0"
            VALUE "SpecialBuild", "Special"
            VALUE "VarFileInfo", "VarFile"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation",   0x0407, 1252
    }
}

A1MAIN      ICON RES\VILM.ico

B1IMPORT    BITMAP .\RES\BLUE_UP.BMP
B1EXIT      BITMAP .\RES\EXIT.BMP
B1SOUND         BITMAP .\RES\SNDVOL32.BMP


Manifest work under BCC7 32 Bit so what i´m doing wrong :?:

Code: Select all | Expand

   1 24 "Windows10.Manifest"

    VS_VERSION_INFO VERSIONINFO
     FILEVERSION 0,0,1,6
     PRODUCTVERSION 1,0,0,1
     FILEFLAGSMASK 0x3fL
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x40004L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040904b0"
            BEGIN
             VALUE "FileDescription", "FiveWin VLC IPTV 32 Bit\000"
             VALUE "FileVersion", "0.6.9.0"
             VALUE "InternalName", "FWIPTV"
             VALUE "LegalCopyright", "Copyright © 1983-2022 Yiu-Software\000"
             VALUE "LegalTrademarks", "Harbour"
             VALUE "OriginalFilename", "FWIPTV.EXE"
             VALUE "CompanyName", "Yiu-Software"
             VALUE "ProductName", "IPTV"
             VALUE "ProductVersion", "1.0.0.0"
             VALUE "Comments", "Created by Auge & Ohr\000"
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation",  0x0407, 1252
        END
    END

A1MAIN      ICON RES\VILM.ico

B1IMPORT    BITMAP .\RES\BLUE_UP.BMP
B1EXIT      BITMAP .\RES\EXIT.BMP
B1SOUND         BITMAP .\RES\SNDVOL32.BMP
greeting,
Jimmy
User avatar
Antonio Linares
Site Admin
Posts: 42595
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 40 times
Been thanked: 86 times
Contact:

Re: Manifest for 64 Bit

Post by Antonio Linares »

Dear Jimmy,

Are you uing Microsoft Visual Studio Community to edit them ? We encourage you to use Visual Studio Community to manage them.

Please keep in mind that 32 and 64 bits manifest files may be different
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Jimmy
Posts: 1740
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany
Has thanked: 2 times

Re: Manifest for 64 Bit

Post by Jimmy »

hi Antonio,
Antonio Linares wrote:Are you uing Microsoft Visual Studio Community to edit them ?
We encourage you to use Visual Studio Community to manage them.

i only use BUILGh64.BAT
have never start MSVC IDE ...

Antonio Linares wrote:Please keep in mind that 32 and 64 bits manifest files may be different

Yes, that seems different ...

did somebody have working 64 Bit *.RC where those Entry work :?:
greeting,
Jimmy
User avatar
Enrico Maria Giordano
Posts: 8767
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Has thanked: 1 time
Been thanked: 5 times
Contact:

Re: Manifest for 64 Bit

Post by Enrico Maria Giordano »

This is working for me (at least using BCC 7.30 64 bit):

Code: Select all | Expand

1 24
{
 '3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31'
 '2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 55 54'
 '46 2D 38 22 20 73 74 61 6E 64 61 6C 6F 6E 65 3D'
 '22 79 65 73 22 3F 3E 0D 0A 3C 61 73 73 65 6D 62'
 '6C 79 20 78 6D 6C 6E 73 3D 22 75 72 6E 3A 73 63'
 '68 65 6D 61 73 2D 6D 69 63 72 6F 73 6F 66 74 2D'
 '63 6F 6D 3A 61 73 6D 2E 76 31 22 20 6D 61 6E 69'
 '66 65 73 74 56 65 72 73 69 6F 6E 3D 22 31 2E 30'
 '22 3E 0D 0A 20 20 3C 64 65 70 65 6E 64 65 6E 63'
 '79 3E 0D 0A 20 20 20 20 3C 64 65 70 65 6E 64 65'
 '6E 74 41 73 73 65 6D 62 6C 79 3E 0D 0A 20 20 20'
 '20 20 20 3C 61 73 73 65 6D 62 6C 79 49 64 65 6E'
 '74 69 74 79 20 74 79 70 65 3D 22 77 69 6E 33 32'
 '22 20 6E 61 6D 65 3D 22 4D 69 63 72 6F 73 6F 66'
 '74 2E 57 69 6E 64 6F 77 73 2E 43 6F 6D 6D 6F 6E'
 '2D 43 6F 6E 74 72 6F 6C 73 22 20 76 65 72 73 69'
 '6F 6E 3D 22 36 2E 30 2E 30 2E 30 22 20 70 72 6F'
 '63 65 73 73 6F 72 41 72 63 68 69 74 65 63 74 75'
 '72 65 3D 22 61 6D 64 36 34 22 20 70 75 62 6C 69'
 '63 4B 65 79 54 6F 6B 65 6E 3D 22 36 35 39 35 62'
 '36 34 31 34 34 63 63 66 31 64 66 22 20 6C 61 6E'
 '67 75 61 67 65 3D 22 2A 22 20 2F 3E 0D 0A 20 20'
 '20 20 3C 2F 64 65 70 65 6E 64 65 6E 74 41 73 73'
 '65 6D 62 6C 79 3E 0D 0A 20 20 3C 2F 64 65 70 65'
 '6E 64 65 6E 63 79 3E 0D 0A 3C 2F 61 73 73 65 6D'
 '62 6C 79 3E'
}


EMG
User avatar
Jimmy
Posts: 1740
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany
Has thanked: 2 times

Re: Manifest for 64 Bit

Post by Jimmy »

hi,
Enrico Maria Giordano wrote:This is working for me (at least using BCC 7.30 64 bit):

Thx for Answer.

i got Error at "3C" using MSVC and "Microsoft Resource Compiler"

---

it seem not a x86 / x64 "Problem"
i have use

Code: Select all | Expand

processorArchitecture="X66"

or

Code: Select all | Expand

processorArchitecture="*"

but still no "FileDescription", "CompanyName" etc.

i "only" get Icon and Bitmap
greeting,
Jimmy
User avatar
Enrico Maria Giordano
Posts: 8767
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Has thanked: 1 time
Been thanked: 5 times
Contact:

Re: Manifest for 64 Bit

Post by Enrico Maria Giordano »

Jimmy wrote:i got Error at "3C" using MSVC and "Microsoft Resource Compiler"


Sorry, never used "Microsoft Resource Compiler", I don't like the bloated, limited and bugged MS tools. You have to find what is the syntax it requires for base64 embeded resources. Probably it doesn't support them. You can use brcc32.exe, the BCC resource compiler to produce the RES from the RC.

EMG
MOISES
Posts: 838
Joined: Wed Aug 22, 2007 10:09 am

Re: Manifest for 64 Bit

Post by MOISES »

Hi,

Try this under 32 and 64 bits:

filever.prg

Code: Select all | Expand

#include "FiveWin.ch"

//----------------------------------------------------------------------------//

function Main()

   local n

   for n = 1 to 12
       MsgInfo( GetFileVersionInfo( "filever.exe", n ) )
   next

return nil

//----------------------------------------------------------------------------//


#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

HB_FUNC( GETFILEVERSIONINFO )
{
   char * szFile  = hb_parc( 1 );
   UINT uAction   = HB_ISNUM( 2 ) ? hb_parni( 2 ) : 1;
   DWORD dwHandle = 0;
   DWORD dwSize   = GetFileVersionInfoSize( szFile, &dwHandle );
   char * szOut   = NULL;
   BOOL  bOk      = FALSE;

   if( dwSize )
   {
      char * szBlock = ( char * ) hb_xgrab( 255 );
      char * szSubBlock = ( char * ) hb_xgrab( 255 );
      HGLOBAL hMem = GlobalAlloc( GMEM_MOVEABLE, dwSize );
      VS_FIXEDFILEINFO * vsInfo;
      UINT nLen = 0;

      if( hMem )
      {
         LPVOID pMem = GlobalLock( hMem );

         if( pMem && GetFileVersionInfo( szFile, dwHandle, dwSize, pMem ) )
         {
            if( VerQueryValue( pMem, "\\VarFileInfo\\Translation", ( LPVOID * ) &vsInfo, &nLen ) )
            {
               *( LPDWORD ) vsInfo = MAKELONG( HIWORD( *( LPDWORD ) vsInfo ), LOWORD( *( LPDWORD ) vsInfo ) );

               sprintf( szBlock, "\\StringFileInfo\\%08lx\\", *( LPDWORD )( vsInfo ) );

               switch( uAction )
               {
                  case 1:
                     sprintf( szSubBlock, "%s%s", szBlock, "Comments" );
                     break;

                  case 2:
                     sprintf( szSubBlock, "%s%s", szBlock, "CompanyName" );
                     break;

                  case 3:
                     sprintf( szSubBlock, "%s%s", szBlock, "FileDescription" );
                     break;

                  case 4:
                     sprintf( szSubBlock, "%s%s", szBlock, "FileVersion" );
                     break;

                  case 5:
                     sprintf( szSubBlock, "%s%s", szBlock, "InternalName" );
                     break;

                  case 6:
                     sprintf( szSubBlock, "%s%s", szBlock, "LegalCopyright" );
                     break;

                  case 7:
                     sprintf( szSubBlock, "%s%s", szBlock, "LegalTrademarks" );
                     break;

                  case 8:
                     sprintf( szSubBlock, "%s%s", szBlock, "OriginalFilename" );
                     break;

                  case 9:
                     sprintf( szSubBlock, "%s%s", szBlock, "PrivateBuild" );
                     break;

                  case 10:
                     sprintf( szSubBlock, "%s%s", szBlock, "ProductName" );
                     break;

                  case 11:
                     sprintf( szSubBlock, "%s%s", szBlock, "ProductVersion" );
                     break;

                  case 12:
                     sprintf( szSubBlock, "%s%s", szBlock, "SpecialBuild" );
                     break;
               }

               if( VerQueryValue( pMem, szSubBlock, ( LPVOID * ) &szOut, &nLen ) )
                  bOk = TRUE;

               hb_xfree( szBlock );
               hb_xfree( szSubBlock );
            }

            GlobalUnlock( hMem );
            GlobalFree( hMem );
         }
      }
   }

   if( bOk )
      hb_retc( szOut );
   else
      hb_retc( "" );
}

#pragma ENDDUMP

//----------------------------------------------------------------------------//

 



filever.rc

Code: Select all | Expand

LANGUAGE LANG_SPANISH,SUBLANG_SPANISH_MODERN

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK 0x3F
FILEFLAGS 0x0
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "040904B0"
    BEGIN
      VALUE "Comments", "This is a test to manage FileVersion resource\0"
      VALUE "CompanyName", "FiveTech Software\0"
      VALUE "FileDescription", "FileVer.prg demo\0"
      VALUE "FileVersion", "1.0.0.0\0"
      VALUE "InternalName", "FileVer.prg / FileVer.rc\0"
      VALUE "LegalCopyright", "www.fivetechsoft.com\0"
      VALUE "LegalTrademarks", "FiveTech Software S.L.\0"
      VALUE "OriginalFilename", "FileVer.prg\0"
      VALUE "ProductName", "FileVer.prg demo\0"
      VALUE "ProductVersion", "1.0.0.0\0"
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x409, 0x4B0
  END
END

 
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Post Reply