#ifndef CHROME_UPDATER_WIN_INSTALLER_INSTALLER_H_
#define CHROME_UPDATER_WIN_INSTALLER_INSTALLER_H_
#include <windows.h>
#include <optional>
#include "base/command_line.h"
#include "chrome/updater/win/installer/exit_code.h"
#include "chrome/updater/win/installer/string.h"
namespace base {
class FilePath;
}
namespace updater {
struct ProcessExitResult {
DWORD exit_code;
DWORD windows_error;
explicit ProcessExitResult(DWORD exit) : exit_code(exit), windows_error(0) {}
ProcessExitResult(DWORD exit, DWORD win)
: exit_code(exit), windows_error(win) {}
bool IsSuccess() const { return exit_code == SUCCESS_EXIT_CODE; }
};
inline constexpr size_t kInstallerMaxCommandString = 8191;
using CommandString = StackString<kInstallerMaxCommandString>;
std::optional<base::FilePath> FindOfflineDir(const base::FilePath& unpack_path);
ProcessExitResult BuildInstallerCommandLineArguments(
const wchar_t* cmd_line,
wchar_t* cmd_line_args,
size_t cmd_line_args_capacity);
ProcessExitResult HandleRunElevated(const base::CommandLine& command_line);
int WMain(HMODULE module);
}
#endif