[email protected] | 90509cb | 2011-03-25 18:46:38 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #ifndef BASE_FILE_VERSION_INFO_WIN_H_ | ||||
6 | #define BASE_FILE_VERSION_INFO_WIN_H_ | ||||
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 7 | |
fdoray | 5b7de9e9 | 2016-06-29 23:13:11 | [diff] [blame] | 8 | #include <windows.h> |
9 | |||||
10 | #include <stdint.h> | ||||
11 | |||||
dcheng | 093de9b | 2016-04-04 21:25:51 | [diff] [blame] | 12 | #include <memory> |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 13 | #include <string> |
fdoray | 5b7de9e9 | 2016-06-29 23:13:11 | [diff] [blame] | 14 | #include <vector> |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 15 | |
[email protected] | 0bea725 | 2011-08-05 15:34:00 | [diff] [blame] | 16 | #include "base/base_export.h" |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 17 | #include "base/file_version_info.h" |
avi | 9b6f4293 | 2015-12-26 22:15:14 | [diff] [blame] | 18 | #include "base/macros.h" |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 19 | |
20 | struct tagVS_FIXEDFILEINFO; | ||||
21 | typedef tagVS_FIXEDFILEINFO VS_FIXEDFILEINFO; | ||||
22 | |||||
mgiuca | 8137fc2 | 2015-05-07 02:20:31 | [diff] [blame] | 23 | class BASE_EXPORT FileVersionInfoWin : public FileVersionInfo { |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 24 | public: |
mgiuca | 8137fc2 | 2015-05-07 02:20:31 | [diff] [blame] | 25 | ~FileVersionInfoWin() override; |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 26 | |
27 | // Accessors to the different version properties. | ||||
28 | // Returns an empty string if the property is not found. | ||||
dcheng | fbce126 | 2015-04-17 07:35:46 | [diff] [blame] | 29 | base::string16 company_name() override; |
30 | base::string16 company_short_name() override; | ||||
31 | base::string16 product_name() override; | ||||
32 | base::string16 product_short_name() override; | ||||
33 | base::string16 internal_name() override; | ||||
34 | base::string16 product_version() override; | ||||
35 | base::string16 private_build() override; | ||||
36 | base::string16 special_build() override; | ||||
37 | base::string16 comments() override; | ||||
38 | base::string16 original_filename() override; | ||||
39 | base::string16 file_description() override; | ||||
40 | base::string16 file_version() override; | ||||
41 | base::string16 legal_copyright() override; | ||||
42 | base::string16 legal_trademarks() override; | ||||
43 | base::string16 last_change() override; | ||||
44 | bool is_official_build() override; | ||||
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 45 | |
46 | // Lets you access other properties not covered above. | ||||
mgiuca | 8137fc2 | 2015-05-07 02:20:31 | [diff] [blame] | 47 | bool GetValue(const wchar_t* name, std::wstring* value); |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 48 | |
49 | // Similar to GetValue but returns a wstring (empty string if the property | ||||
50 | // does not exist). | ||||
mgiuca | 8137fc2 | 2015-05-07 02:20:31 | [diff] [blame] | 51 | std::wstring GetStringValue(const wchar_t* name); |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 52 | |
53 | // Get the fixed file info if it exists. Otherwise NULL | ||||
fdoray | 5b7de9e9 | 2016-06-29 23:13:11 | [diff] [blame] | 54 | const VS_FIXEDFILEINFO* fixed_file_info() const { return fixed_file_info_; } |
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 55 | |
56 | private: | ||||
fdoray | 5b7de9e9 | 2016-06-29 23:13:11 | [diff] [blame] | 57 | friend FileVersionInfo; |
58 | |||||
59 | // |data| is a VS_VERSION_INFO resource. |language| and |code_page| are | ||||
60 | // extracted from the \VarFileInfo\Translation value of |data|. | ||||
61 | FileVersionInfoWin(std::vector<uint8_t>&& data, | ||||
62 | WORD language, | ||||
63 | WORD code_page); | ||||
64 | FileVersionInfoWin(void* data, WORD language, WORD code_page); | ||||
65 | |||||
66 | const std::vector<uint8_t> owned_data_; | ||||
67 | const void* const data_; | ||||
68 | const WORD language_; | ||||
69 | const WORD code_page_; | ||||
70 | |||||
71 | // This is a pointer into |data_| if it exists. Otherwise nullptr. | ||||
72 | const VS_FIXEDFILEINFO* const fixed_file_info_; | ||||
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 73 | |
74 | DISALLOW_COPY_AND_ASSIGN(FileVersionInfoWin); | ||||
75 | }; | ||||
76 | |||||
77 | #endif // BASE_FILE_VERSION_INFO_WIN_H_ |