2012-06-11 31 views
5

Vì vậy, Quản lý sản phẩm đã quyết định rằng phần mềm của chúng tôi phải có số phiên bản với 3 bộ chữ số thay vì thông thường 4 (ví dụ: 1.2.3 thay vì 1.2.3.4)"Phiên bản tệp" trong giá trị thuộc tính Windows là FILEVERSION không phải là "FileVersion"

Điều này có thể dễ dàng thực hiện trong hộp thoại "Giới thiệu" và ở nơi khác trong giao diện người dùng, nhưng tôi đang gặp sự cố với thuộc tính Windows.

Khi tôi thay đổi các giá trị trong VERSIONINFO khối:

FILEVERSION 1,2,3 
PRODUCTVERSION 1,2,3 

VALUE "FileVersion", "1.2.3" 
VALUE "ProductVersion", "1.2.3" 

tôi kết thúc với những điều sau đây trong Windows 7 Properties> tab Thông tin chi tiết cho các exe:

phiên bản

File: 1.2.3.0 sản phẩm phiên bản: 1.2.3

Thay đổi giá trị thành khác nhau cho biết "Phiên bản tệp" được lấy từ FILEVERSION và luôn được định dạng dưới dạng giá trị nhóm gồm 4 chữ số, nhưng "Phiên bản sản phẩm" được lấy từ "ProductVersion".

Có cách nào để chỉ định rằng "Phiên bản tệp" phải được lấy từ giá trị chuỗi "FileVersion" không? Nếu tôi xóa khối FILEVERSION, tôi chỉ kết thúc bằng "Phiên bản tệp" là 0.0.0.0.

tôi đã sao chép hành vi này trong VS2010 bằng cách tạo ra một giao diện điều khiển ứng dụng Win32 trống rỗng, sau đó thêm một nguồn tài nguyên phiên bản mặc định:

VS_VERSION_INFO VERSIONINFO 
FILEVERSION 1,0,1 
PRODUCTVERSION 1,0,2 
FILEFLAGSMASK 0x3fL 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x40004L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "080904b0" 
     BEGIN 
      VALUE "CompanyName", "TODO: <Company name>" 
      VALUE "FileDescription", "TODO: <File description>" 
      VALUE "FileVersion", "1.0.3" 
      VALUE "InternalName", "VersionT.exe" 
      VALUE "LegalCopyright", "Copyright (C) 2012" 
      VALUE "OriginalFilename", "VersionT.exe" 
      VALUE "ProductName", "TODO: <Product name>" 
      VALUE "ProductVersion", "1.0.4" 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x809, 1200 
    END 
END 

Kết quả trong cùng một vấn đề: properties http://media.use.com/images/s_1/4ba4e5b1b235179b1c9a.jpg

Hình ảnh này có thể đi ra nhỏ, vì vậy tôi sẽ chỉ xác nhận rằng nó nói Phiên bản tệp 1.0.1.0 Phiên bản sản phẩm 1.0.4

Trước khi tôi nói với sản phẩm Ma nagement rằng đây là điều tốt nhất chúng ta có thể làm, có cách nào để Windows hiển thị giá trị chuỗi "FileVersion" thay thế không? Tôi đã đọc qua tài liệu VERSIONINFO trên MSDN và không thể thấy bất kỳ cờ nào mà tôi có thể thiết lập để thực hiện việc này.

+0

Bạn có thể thay thế trình xử lý trang thuộc tính mà tôi cho là. Điều đó sẽ không khôn ngoan. –

+0

Không, điều đó thực sự không giống như một giải pháp khả thi. Cảm ơn mặc dù. – Chris

Trả lời

1

Sau khi xây dựng và lắp đặt this shell extension I found at CodeProject, có vẻ như điều này là do Windows 7 chỉ hiển thị một tập hợp con của các thuộc tính versioninfo, và không có gì tôi có thể làm gì để thay đổi nó. Chuỗi FileVersion có trong exe, nó không được hiển thị trong hộp thoại thuộc tính mặc định.

Các vấn đề liên quan