blob: 062d8ef5ece86f5f539dfba6adf410af3f0512ee [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_ENTERPRISE_COMPANION_INSTALLER_PATHS_H_
#define CHROME_ENTERPRISE_COMPANION_INSTALLER_PATHS_H_
#include <optional>
#include "base/files/file_path.h"
#include "build/build_config.h"
// Utilities regarding installation paths for the Chrome Enterprise Companion
// App which may be depended upon by both the internal and client libraries.
namespace enterprise_companion {
// The name of the program image. E.g. "enterprise_companion.exe".
extern const char kExecutableName[];
// Determines the install directory for the app. On Windows this is dependent on
// the architecture of the program image.
std::optional<base::FilePath> GetInstallDirectory();
// Searches the system for an existing installation of the app. On Windows, it
// is possible that 32 and 64-bit installations exist. In such cases, the latter
// is returned. Returns a path to the installed application binary, if one
// exists.
std::optional<base::FilePath> FindExistingInstall();
#if BUILDFLAG(IS_MAC)
// Returns the path to the system's ksadmin.
base::FilePath GetKSAdminPath();
#endif
#if BUILDFLAG(IS_WIN)
// Returns the path to the install directory used by other builds of this
// application. That is, for 32-bit builds this returns the 64-bit install
// directory and vice versa:
// * 32-bit process on 32-bit host: nullopt
// * 32-bit process on 64-bit host: C:\Program Files\...
// * 64-bit process on 64-bit host: C:\Program Files (x86)\...
std::optional<base::FilePath> GetInstallDirectoryForAlternateArch();
#endif
} // namespace enterprise_companion
#endif // CHROME_ENTERPRISE_COMPANION_INSTALLER_PATHS_H_