2014-06-10 1 views
0

J'ai une application compilée pour Compact Framework dont j'ai besoin de trouver le numéro de version pour utiliser Delphi 2006. J'utilise le code ci-dessous.Obtenir le numéro de version du framework exe compact de l'application Delphi PC

function VersionNumber(ExeFile: string): string; 
var 
    Size: Longint; 
    Dummy: Cardinal; 
    Buffer: Pointer; 
    FileInfo: Pointer; 
begin 
    Size := GetFileVersionInfoSize(PChar(ExeFile), Dummy); 
    GetMem(Buffer, Size); 
    if (GetFileVersionInfo(PChar(ExeFile), Dummy, Size, Buffer)) then begin 
    //VerQueryValue(Buffer, '\\', FileInfo, Dummy); 
    //with PVSFixedFileInfo(FileInfo)^ do 
     //Result := IntToStr(dwFileVersionMS div $10000) + '.' + 
     // IntToStr(dwFileVersionMS mod $10000) + '.' + 
     // IntToStr(dwFileVersionLS div $10000) + ' (' + 
     // IntToStr(dwFileVersionLS mod $10000) + ')'; 
    end 
    else begin 
    Result := 'No version info available.'; 
    end; 
    FreeMem(Buffer, Size); 
end; 

Si je considère les détails du fichier à l'aide de Windows 7, je ne peux pas voir le numéro de version là non plus, il est donc pas surprenant que je ne peux pas obtenir de Delphi.

Juste sur le hasard quelqu'un sait un moyen d'obtenir le numéro de version, il serait grandement apprécié.

MISE À JOUR

Ce code a été écrit il y a plus de dix ans par un membre du personnel ex. Jusqu'à présent, cela a fonctionné correctement, mais n'a jamais été essayé sur un exécutable compilé pour Compact Framework.

La fonction GetFileVersionInfo renvoie false, donc j'obtiens 'Aucune information de version disponible'. résultat.

+0

Jetez un oeil à cette question http://stackoverflow.com/questions/1981297/version-information-missing-from-net-assembly-compact-framework-3-5-vs2008 – Graymatter

+0

Que produit votre code –

+0

C'est inutile de chercher une ressource qui n'est pas là. Je pense que vous devriez supprimer tout ce code inutile et nous montrer ce que vous cherchez. Si ce n'est pas la ressource de la version, qu'est-ce que c'est? Quelques méta-données .net. Mais quoi? –

Répondre

1

CF ne place pas C/C++ FileVersionInfo dans des fichiers EXE ou DLL. AssemblyInfo est quelque chose de différent de la ressource FileVersionInfo que vous recherchez avec votre exemple de code.

ctacke a un post utile à ce sujet à http://blog.opennetcf.com/2014/01/03/howto-add-the-win32-file-version-to-your-net-compact-framework-assemblies/ qui peut être trouvé via Version information missing from .NET assembly (Compact Framework 3.5/VS2008), ce que graymatter déjà posté.

Questions connexes