[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 | |
David Benjamin | 04cc2b4 | 2019-01-29 05:30:33 | [diff] [blame^] | 56 | // Behaves like CreateFileVersionInfo, but returns a FileVersionInfoWin. |
57 | static std::unique_ptr<FileVersionInfoWin> CreateFileVersionInfoWin( | ||||
58 | const base::FilePath& file_path); | ||||
59 | |||||
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 60 | private: |
fdoray | 5b7de9e9 | 2016-06-29 23:13:11 | [diff] [blame] | 61 | friend FileVersionInfo; |
62 | |||||
63 | // |data| is a VS_VERSION_INFO resource. |language| and |code_page| are | ||||
64 | // extracted from the \VarFileInfo\Translation value of |data|. | ||||
65 | FileVersionInfoWin(std::vector<uint8_t>&& data, | ||||
66 | WORD language, | ||||
67 | WORD code_page); | ||||
68 | FileVersionInfoWin(void* data, WORD language, WORD code_page); | ||||
69 | |||||
70 | const std::vector<uint8_t> owned_data_; | ||||
71 | const void* const data_; | ||||
72 | const WORD language_; | ||||
73 | const WORD code_page_; | ||||
74 | |||||
75 | // This is a pointer into |data_| if it exists. Otherwise nullptr. | ||||
76 | const VS_FIXEDFILEINFO* const fixed_file_info_; | ||||
[email protected] | bcff05a | 2010-04-14 01:46:43 | [diff] [blame] | 77 | |
78 | DISALLOW_COPY_AND_ASSIGN(FileVersionInfoWin); | ||||
79 | }; | ||||
80 | |||||
81 | #endif // BASE_FILE_VERSION_INFO_WIN_H_ |