/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef INCLUDED_MSIHELPER_HXX #define INCLUDED_MSIHELPER_HXX #ifdef _MSC_VER #pragma warning(push, 1) /* disable warnings within system headers */ #endif #define WIN32_LEAN_AND_MEAN #include #include #ifdef _MSC_VER #pragma warning(pop) #endif #include /** Get the value of the named property @param handle [in] a valid msi handle. @param name [in] the name of the property. @param value [out] receives thes value of the property. @returns if the property was found. */ bool GetMsiProp(MSIHANDLE handle, LPCTSTR name, /*out*/std::wstring& value); /** Set the value of a binary property which can only have the values "0" or "1" to "1". @param handle [in] a valid msi handle. @param name [in] the name of the property. */ void SetMsiProp(MSIHANDLE handle, LPCTSTR name); /** Set the value of a binary property which can only have the values "0" or "1" to "0". @param handle [in] a valid msi handle. @param name [in] the name of the property. */ void UnsetMsiProp(MSIHANDLE handle, LPCTSTR name); /** Returns whether a certain property is set meaning its value is "1". This method should be used for binary properties whose value can be "0" or "1". @returns if the value of the specified property is "1" else if the property is not defined or its value is other than "1" will be returned. */ bool IsSetMsiProp(MSIHANDLE handle, LPCTSTR name); /** Returns whether a certain property is set meaning its value is not empty. This method should be used for properties, that can have different values. @returns if the value of the specified property is not empty. If it is empty will be returned. */ bool IsMsiPropNotEmpty(MSIHANDLE handle, LPCTSTR name); /** Query if this is an installation for all user or not. @param handle [in] a valid msi handle. @returns if this is an all user installation */ bool IsAllUserInstallation(MSIHANDLE handle); /** Returns the destination folder of the office installation as system path. The returned path contains a final '\'. @param handle [in] a valid msi handle. @returns the destination path of the office installation finalized with a '\'. */ std::wstring GetOfficeInstallationPath(MSIHANDLE handle); /** Returns the absolute path of the office executable that will be installed as system path. @param handle [in] a valid msi handle. @returns the absolute system path of the office executable (e.g. (C:\Program Files\StarOffice 8\program\soffice.exe"). */ std::wstring GetOfficeExecutablePath(MSIHANDLE handle); /** Get the name of the office that will be installed (e.g. StarOffice 8, StarSuite 8, ...). @param handle [in] a valid msi handle. @returns the name of the office product that will be installed. */ std::wstring GetProductName(MSIHANDLE handle); /** Determine if the specified module is installed locally. @param handle [in] a valid msi handle. @param name [in] the name of the module. @returns if the specified module is installed locally. */ bool IsModuleInstalled(MSIHANDLE handle, LPCTSTR name); /** Determine if the specified module is selected to be installed locally. @param handle [in] a valid msi handle. @param name [in] the name of the module. @returns if the specified module is about to be installed locally. */ bool IsModuleSelectedForInstallation(MSIHANDLE handle, LPCTSTR name); /** Determine if the specified module which is locally installed is selected for deinstallation. @param handle [in] a valid msi handle. @param name [in] the name of the module. @returns if the specified module is about to be deinstalled. */ bool IsModuleSelectedForDeinstallation(MSIHANDLE handle, LPCTSTR name); /** Determine whether this is a complete uninstallation or not. @param handle [in] a valid msi handle. @returns if this is a complete deinstallation. */ bool IsCompleteDeinstallation(MSIHANDLE handle); #endif