Probleme beim Einbinden von Ressourcen in das .exe File



  • Hallo zusammen.
    Versuche gerade Versioninformationen in meiner Ressourcdatei zu erstellen. Das Problem dabei ist, das ich beim Compilieren keine Fehlermeldung erhalte. Wenn ich die entsprechende ".res" Datei öffne sind sämtliche übergebenen Informationen auch gespeichert. Allerdings werden diese nicht in meine ".exe" übernommen.

    Ich benutze den Visuall C++ Compiler 2008. Express-Edition.

    Hier mein Quelltext welchen ich anhand der Infos auf der MSD-Seite aufgebaut habe:

    VS_VERSION_INFO VERSIONINFO
     FILEVERSION 2,0,0,1
     PRODUCTVERSION 2,0,0,1						 
     FILEFLAGSMASK 0x0000003FL // VS_FFI_FILEFLAGSMASK 
    #ifdef _DEBUG
     FILEFLAGS 0x1L		  // VS_FF_DEBUG
    #else
     FILEFLAGS 0x0L 
    #endif
     FILEOS 0x4L		  // VOS__WINDOWS32
     FILETYPE 0x0L		  // hier auf 0x1L weil eine Applikation
     FILESUBTYPE 0x1L	  // VFT2_UNKNOWN
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040904E4"  
            BEGIN
                VALUE "Comments", "none\0"
                VALUE "CompanyName", "Firmenname\0"
                VALUE "FileDescription", "Bills\0"
                VALUE "FileVersion", "2, 0, 0, 1\0"
                VALUE "InternalName", "bill\0"
                VALUE "LegalCopyright", "Copyright (C) 2010\0"
                VALUE "OriginalFilename", "bill.exe\0"
                VALUE "ProductName", "Bills\0"
                VALUE "ProductVersion", "2, 0, 0, 1\0"
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x407, 1200 // 0x407 == deutsch  1200 == unicode
        END
    END
    

    Weiß im Moment leider wirklich nicht wo ich den Wurm drinnen hab.
    Thx
    Ollow


  • Administrator

    1. Komplett falsche Forum. Gehört nach MFC (Visual C++) oder Compiler- und IDE-Forum.
    2. Hast du auch angegeben, dass die Ressource zum Projekt gehört und eingefügt werden soll? Kann man unter Eigenschaften/Properties einstellen.

    Grüssli



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dann werd ich wohl auch mal in dem Forum posten 😉

    Ja in den Eigenschaften sind die Einstellungen soweit richtig.
    Er übernimmt ja auch die Icon´s welche ich über die Ressourcendatei lade mit ins Projekt(.exe). Nur die Versionsinformationen schluckt er aus irgendeinem Grund nicht...


  • Mod

    Das gehört nicht in eine .res Datei sondern in eine .rc Datei!



  • Ja klar. Im Projekt liegt es auch in einer ".rc" Datei. Der Compiler erstellt dann daraus eine ".res" Datei, die er im "Debug" Ordner ablegt.
    Diese wenn ich öffne (mit einem Editor), kann ich die Infos auslesen. Werden ja im Klartext gespeichert in der ".res" Datei.

    Hmm vielleicht liegt es an der Express Edition ?? Das das compilieren von Ressourcen da doch irgendwelche Einschränkungen hat !?!?



  • So hallo nochmal zusammen.

    Also im Quelltext lag wirklich kein Fehler vor. Lag wirklich nur am Compiler. Habe das ganze mit der Prof. Edition kompiliert und siehe da, funktionierte einwandfrei.

    Vermutlich lassen sich Versionsinfo nicht mit der Express-Editon kompilieren.

    Mfg



  • Ich dachte, das muss heißen:
    BLOCK "040704B0"



  • Also auf den MSDN-Seiten wird das Beispiel mit "040904E4" angegeben. Hab aber im Internet auch andere Beispiele mit anderen Blocknummern gefunden.
    Weiß jetzt nicht ob das an irgend einen Standard gebunden ist. Hab zumindest nichts gefunden evtl. weiß ja jemand mehr.

    Seite auf MSDN-Center

    http://msdn.microsoft.com/en-us/library/aa381058%28VS.85%29.aspx


  • Mod

    Steht hier:
    http://msdn.microsoft.com/en-us/library/aa381049(VS.85).aspx und
    http://msdn.microsoft.com/en-us/library/aa381057(VS.85).aspx

    Die ersten 4 Zeichen definieren in Hex die Sprache. Die zweiten 4 Zeichen die Codepage.

    Ich benutze immer:
    "000004e4"
    Also
    VALUE "Translation", 0x0, 1252

    Sprache 0 = Neutral (LANG_NEUTRAL,SUBLANG_NEUTRAL)

    Ich verfasse mein Version-Infos immer "Neutral" und lokalisiere diese nie.



  • Stimmt, eigentlich logisch. Weil die Funktion

    VerQueryValue()
    benötigt ja die Sprache und die Codepage im Hex-Format. Aber die Aufstellung darüber hab ich irgendwie übersehen..
    Besten Dank 🙂


Anmelden zum Antworten