Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / installer / util / lzma_util.h
blob634309cb058485dc89ba93b15f68de39e2814b07
1 // Copyright (c) 2009 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.
5 #ifndef CHROME_INSTALLER_UTIL_LZMA_UTIL_H_
6 #define CHROME_INSTALLER_UTIL_LZMA_UTIL_H_
8 #include <windows.h>
10 #include <set>
11 #include <string>
13 #include "base/basictypes.h"
15 namespace base {
16 class FilePath;
19 // This is a utility class that acts as a wrapper around LZMA SDK library
20 class LzmaUtil {
21 public:
22 // Utility method that does the job of calling OpenArchive(), UnPack()
23 // and CloseArchive() in order. Returns error code (NO_ERROR if successful).
24 static int32 UnPackArchive(const std::wstring& archive,
25 const std::wstring& output_dir,
26 std::wstring* output_file);
28 LzmaUtil();
29 ~LzmaUtil();
31 DWORD OpenArchive(const std::wstring& archivePath);
33 // Unpacks the archive to the given location
34 DWORD UnPack(const std::wstring& location);
36 // Unpacks the archive to the given location and returns the last file
37 // extracted from archive. |single_file| is set to true iff only a single
38 // file is extracted from archive.
39 DWORD UnPack(const std::wstring& location,
40 std::wstring* output_file);
42 void CloseArchive();
44 protected:
45 bool CreateDirectory(const base::FilePath& dir);
47 private:
48 HANDLE archive_handle_;
49 std::set<std::wstring> directories_created_;
51 DISALLOW_COPY_AND_ASSIGN(LzmaUtil);
54 #endif // CHROME_INSTALLER_UTIL_LZMA_UTIL_H_