// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_INSTALLER_UTIL_SELF_REG_WORK_ITEM_H__ #define CHROME_INSTALLER_UTIL_SELF_REG_WORK_ITEM_H__ #include <windows.h> #include <string> #include "chrome/installer/util/work_item.h" // Registers or unregisters the DLL at the given path. class SelfRegWorkItem : public WorkItem { public: virtual ~SelfRegWorkItem(); virtual bool Do(); virtual void Rollback(); private: friend class WorkItem; // Constructs a work item that will call upon a self-registering DLL to // register itself. // dll_path: The path to the DLL. // do_register: Whether this action is to register or unregister the DLL. // user_level_registration: If true, then the exports called // "DllRegisterUserServer" and "DllUnregisterUserServer" will be called to // register and unregister the DLL. If false, the default exports named // "DllRegisterServer" and "DllUnregisterUserServer" will be used. SelfRegWorkItem(const std::wstring& dll_path, bool do_register, bool user_level_registration); // Examines the DLL at dll_path looking for either DllRegisterServer (if // do_register is true) or DllUnregisterServer (if do_register is false). // Returns true if the DLL exports the function and it a call to it // succeeds, false otherwise. bool RegisterDll(bool do_register); // The path to the dll to be registered. std::wstring dll_path_; // Whether this work item will register or unregister the dll. The rollback // action just inverts this parameter. bool do_register_; // Whether to use alternate export names on the DLL that will perform // user level registration. bool user_level_registration_; }; #endif // CHROME_INSTALLER_UTIL_SELF_REG_WORK_ITEM_H__