resource_updater.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// A helper class for updating resources in portable executable files.
6
7#ifndef CHROME_INSTALLER_TEST_RESOURCE_UPDATER_H_
8#define CHROME_INSTALLER_TEST_RESOURCE_UPDATER_H_
9
10#include <windows.h>
11
12#include <string>
13#include <utility>
14
15#include "base/basictypes.h"
16
17namespace base {
18class FilePath;
19}
20
21namespace upgrade_test {
22
23// Updates resources in a PE image file.
24class ResourceUpdater {
25 public:
26  ResourceUpdater();
27  ~ResourceUpdater();
28
29  // Loads |pe_image_path| in preparation for updating its resources.
30  bool Initialize(const base::FilePath& pe_image_path);
31
32  // Replaces the contents of the resource |name| of |type| and |language_id|
33  // with the contents of |input_file|, returning true on success.
34  bool Update(const std::wstring& name, const std::wstring& type,
35              WORD language_id, const base::FilePath& input_file);
36
37  // Commits all updates to the file on disk.
38  bool Commit();
39
40 private:
41  HANDLE handle_;
42  DISALLOW_COPY_AND_ASSIGN(ResourceUpdater);
43};  // class ResourceUpdater
44
45}  // namespace upgrade_test
46
47#endif  // CHROME_INSTALLER_TEST_RESOURCE_UPDATER_H_
48