Pergunta

Não conheço scripts RC.

Quero incluir a versão do produto, a versão do arquivo, etc.metadados em uma DLL que estou construindo.Estou usando um arquivo .rc para fazer isso.A construção é orientada por makefile.Estou acompanhando um exemplo de scrpit .rc que encontrei.

O arquivo .rc do modelo inclui afxres.h , mas acho que não preciso disso.Mas se eu apenas removê-lo, recebo vários erros de compilação.

Qual é a aparência de um script RC básico não MFC?Posso remover todas as coisas assim:

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

....
Foi útil?

Solução 2

Minha resposta:
Não, eu não preciso de toda essa porcaria. Aqui está um script RC que funciona para o VersionInfo.

#define VER_FILEVERSION          1,2,3,4
#define VER_FILEVERSION_STR      "1.2.3.4"
#define VER_PRODUCTVERSION       1,2,0,0
#define VER_PRODUCTVERSION_STR   "1.2.0.0"

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

VS_VERSION_INFO VERSIONINFO
 FILEVERSION            VER_FILEVERSION
 PRODUCTVERSION         VER_PRODUCTVERSION
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
    BLOCK "040904b0"
    BEGIN
    VALUE "CompanyName",      "Company X"
    VALUE "FileDescription",  "Description Goes Here"
    VALUE "InternalName",     "NotSure"
    VALUE "LegalCopyright",   "Copyright (C) 2009 Your Name Here"
    VALUE "OriginalFilename", "DllName.dll"
    VALUE "ProductName",      "Product Title"
    VALUE "FileVersion",      VER_FILEVERSION_STR
    VALUE "ProductVersion",   VER_PRODUCTVERSION_STR
    END
END
BLOCK "VarFileInfo"
BEGIN
    VALUE "Translation", 0x409, 1200
END
END

Conmpile com:

$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc

Outras dicas

Tive um problema semelhante ao tentar compilar sem MFC.A solução do Cheeso não funcionaria adequadamente para mim.

Tudo compilado bem e não vi erros/avisos durante a construção.O ícone que foi definido no meu arquivo de recursos foi mostrado corretamente no 'windows explorer'.No entanto, os dados da versão não estavam disponíveis.(O que pode ser visto ao clicar com o botão direito nas propriedades do executável e da seleção.Neste caso, não havia guia 'versão' presente.)

Para fazê-lo funcionar, tive que adicionar o seguinte include no topo do arquivo .rc:

#include <windows.h>

Com essa mudança, a aba de versão apareceria nas propriedades do executável.Além disso, a classe .NET System.Diagnostics.FileVersionInfo agora é capaz de obter as informações da versão, embora isso não funcionasse antes.

Por padrão, "stdafx.h" incluiria "windows.h".Não sei por que o windows.h é necessário, mas parece fazer a diferença no meu caso.

Editar:Adicionadas algumas informações mais específicas, em resposta a Cheeso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top