FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Manifest for 64 Bit
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Manifest for 64 Bit
Posted: Tue Aug 02, 2022 08:11 PM
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 (fw): Select all Collapse
#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 (fw): Select all Collapse
   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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Manifest for 64 Bit
Posted: Wed Aug 03, 2022 04:24 AM

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
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: Manifest for 64 Bit
Posted: Wed Aug 03, 2022 04:31 AM
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
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: Manifest for 64 Bit
Posted: Wed Aug 03, 2022 09:24 PM
This is working for me (at least using BCC 7.30 64 bit):

Code (fw): Select all Collapse
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
Posts: 1772
Joined: Thu Sep 05, 2019 05:32 AM
Re: Manifest for 64 Bit
Posted: Thu Aug 04, 2022 04:01 AM
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 (fw): Select all Collapse
processorArchitecture="X66"

or
Code (fw): Select all Collapse
processorArchitecture="*"

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

i "only" get Icon and Bitmap
greeting,

Jimmy
Posts: 9022
Joined: Thu Oct 06, 2005 08:17 PM
Re: Manifest for 64 Bit
Posted: Thu Aug 04, 2022 07:42 AM
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
Posts: 838
Joined: Wed Aug 22, 2007 10:09 AM
Re: Manifest for 64 Bit
Posted: Thu Aug 04, 2022 04:10 PM
Hi,

Try this under 32 and 64 bits:

filever.prg

Code (fw): Select all Collapse
#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 (fw): Select all Collapse
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

Continue the discussion