2009-06-20 88 views
24

Lorsque je crée un fichier .exe, je peux cliquer avec le bouton droit de la souris et accéder aux propriétés-> détails. Puis-je obtenir une liste comme:Comment modifier les propriétés d'un exécutable? (Windows)

File Description | 
Type    | Application 
File Version  | 
Product Name  | 
Product Version | 
Copyright  | 
Size    | 18.0 KB 
Date Modified | 6/16/2009 8:23 PM 
Language   | 

Comment puis-je modifier ces propriétés? (Et sur une note de côté, est-il un moyen de changer l'icône?)

+2

Est-ce un exécutable que vous compilez, ou un exécutable vous n'avez pas accès au code source de? – DeadHead

+1

Ceci est un exécutable que j'ai déjà compilé à partir du code C++. –

+1

@ Keand64: Si vous voulez le modifier à la main, vous pouvez utiliser Fichier -> Ouvrir dans Visual Studio pour ouvrir le fichier exe et modifier facilement les ressources. –

Répondre

25

Si vous utilisez C/Win32 vous pouvez ajouter quelque chose comme ceci à votre projet encapsulé dans un fichier * .rc (ressource):

VS_VERSION_INFO VERSIONINFO 
FILEVERSION 0,0,0,2 
PRODUCTVERSION 0,0,0,2 
FILEFLAGSMASK 0x3fL 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
{ 
    BLOCK "StringFileInfo" 
    { 
     BLOCK "040904b0" 
     { 
      VALUE "Comments",   "comment\0" 
      VALUE "CompanyName",  "comment\0" 
      VALUE "FileDescription", "base file\0" 
      VALUE "FileVersion",  "0.0.0.2 TP\0" 
      VALUE "InternalName",  "testTP\0" 
      VALUE "LegalCopyright", "none\0" 
      VALUE "OriginalFilename", "test.exe\0" 
      VALUE "ProductName",  "test\0" 
      VALUE "ProductVersion", "0.0.0.2 TP\0" 
     } 
    } 
    BLOCK "VarFileInfo" 
    { 
     VALUE "Translation", 0x409, 1200 
    } 
} 
+4

Pourriez-vous élaborer un peu? –

+4

@ Keand64 Vous trouverez également des informations sur MSDN/VERSIONINFO http://msdn.microsoft.com/fr-fr/library/aa381058.aspx Cependant, je peux essayer de décrire brièvement comment cela fonctionne pour moi en C (pas sûr si c'est la méthode préférée en C++, mais je ne ai pas maintenant à ce sujet que vous faites cela dans C++). J'ajoute un fichier de ressources (par exemple, main.rc) à mon projet, ajoute le code ci-dessus et le modifie en conséquence (voir msdn). Après une recompilation mon fichier .exe contient toutes les informations. Si je me souviens bien dans .NET, vous pouvez faire la même chose avec la commande [assembly: AssemblyTitle ("title")]. – merkuro

+0

En outre, si vous utilisez MinGW (comme je suis), au lieu d'utiliser rc pour compiler votre fichier de ressources qui sera lié à votre exe pour fournir cette information, vous devriez utiliser windres: http: //www.mingw. org/wiki/MS_resource_compiler. Le lien MSDN et ce lien devrait être suffisant pour que vous ajoutiez cette information supplémentaire à vos fichiers EXE. – abelito

6

Ceci est une simple ressource d'information de version de fichier. Pour les fichiers déjà existants, vous pouvez éditer ces informations avec n'importe quel éditeur de ressources (par exemple Resource Hacker, il est obsolète mais toujours bon). Vous pouvez changer d'icône de cette façon aussi.

Si vous créez votre propre application, la configuration dépend de l'outil que vous utilisez. Par exemple, dans Visual Studio, vous devez regarder dans les propriétés du projet.

-1

Pour .NET, google pour "mettre l'ensemble des attributs" pour des informations sur les attributs sont disponibles. Vous utilisez ensuite les attributs comme si ...

using System.Reflection; // Needed to get to the attributes. 

[assembly:AssemblyTitle("My File Description")] 
[etc.] 
+7

Ceci n'est pas une réponse . Le demandeur veut une solution dans C WinAPI, pas .NET C#. – dns

2

Vous n'avez rien à coder. Si vous utilisez Visual Studio, voici la méthode simple:

Sous la solution de votre projet, il y a un dossier appelé Propriétés, développez-le et double-cliquez sur un fichier appelé AssemblyInfo.cs et vous pouvez y changer la chaîne par défaut.

+6

Pas une réponse. Le demandeur veut une solution dans C WinAPI, pas en C#. – dns

+0

Vous ne pouvez pas modifier la propriété EXE (WinAPI) en double-cliquant sur VS. Vous devez coder directement dans le fichier de ressources (voir la réponse @merkuro). Et le demandeur veut en effet la réponse dans WinAPI car il a utilisé le programme C++ compilé dans la section commentaire. – dns

7

Très facile si vous utilisez Visual Studio:

  • Faites un clic droit sur le dossier "Fichiers de ressources de dans le projet
  • Cliquez sur « Ajouter » puis « ressources »
  • Choisissez « Version » de la boîte de dialogue pop-up

Vous pouvez ensuite double-cliquer sur le fichier pour l'ouvrir dans Visual Studio, et vous obtenez un éditeur pratique pour modifier les valeurs.

Vos valeurs sont ensuite automatiquement liées au fichier EXE.

4

Si vous voulez changer le FileDescription ou toute autre chaîne de ressource de version sur un exécutable compilé, rcedit (un petit outil open-source) le fait assez facilement:

$ rcedit MyApp.exe --set-version-string FileDescription "My Awesome App" 
+1

'rcedit' est assez limité en termes de propriétés qu'il peut définir. – ashes999