blob: f6e40fbecd456fb9971985d2d111f3c9e1672bea [file] [log] [blame]
// Copyright 2020 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_BROWSER_WIN_UNINSTALLATION_VIA_OS_SETTINGS_H_
#define CHROME_BROWSER_WIN_UNINSTALLATION_VIA_OS_SETTINGS_H_
#include <string>
namespace base {
class CommandLine;
class FilePath;
} // namespace base
// Registers an uninstall command for a program |key| with the
// Windows Programs and Features control panel.
// The API doesn't allow same duplicate entry for the |key|. If the caller
// updates the uninstall string, it should delete the previous one first.
// |key|: A command ID that is a representative of the application.
// |display_name|: Display name that will be shown on App or Remove Program.
// |publisher|: URL Origin name of the App where it is installed from.
// |uninstall_command|: A command line that has command string that is run
// when the uninstall command is executed for the target application.
// |icon_path|: An icon that will be shown with name in the uninstall UI
// such as Program and Features.
// The system default icon will be used if |icon_path| is empty.
bool RegisterUninstallationViaOsSettings(
const std::wstring& key,
const std::wstring& display_name,
const std::wstring& publisher,
const base::CommandLine& uninstall_command,
const base::FilePath& icon_path);
// Removes the uninstall command for the program `key`. `key` should be
// same with what is used for RegisterUninstallationViaOsSettings for the entry.
// Returns true if no error occurred. The registry entry not existing in the
// first place is considered a success.
bool UnregisterUninstallationViaOsSettings(const std::wstring& key);
#endif // CHROME_BROWSER_WIN_UNINSTALLATION_VIA_OS_SETTINGS_H_