From 8a4dd6f45b12e7d44ad595bc0fadc37075061119 Mon Sep 17 00:00:00 2001 From: skswales Date: Fri, 6 May 2016 20:59:10 +0100 Subject: Work towards tdf#72606 EasyHack _tstring/TCHAR elimination Built and tested Windows MSI installer Change-Id: Id49f7df80e01aaa608fe80687002f44d22bd3200 Reviewed-on: https://gerrit.libreoffice.org/24707 Tested-by: Jenkins Reviewed-by: Noel Grandin --- .../shellextensions/startmenuicon.cxx | 68 ++++++++++------------ 1 file changed, 31 insertions(+), 37 deletions(-) (limited to 'setup_native/source') diff --git a/setup_native/source/win32/customactions/shellextensions/startmenuicon.cxx b/setup_native/source/win32/customactions/shellextensions/startmenuicon.cxx index 3a7177085f8f..d50bf82d9d95 100644 --- a/setup_native/source/win32/customactions/shellextensions/startmenuicon.cxx +++ b/setup_native/source/win32/customactions/shellextensions/startmenuicon.cxx @@ -17,6 +17,9 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#define UNICODE +#define _UNICODE + #ifdef _MSC_VER #pragma warning(push, 1) /* disable warnings within system headers */ #endif @@ -31,29 +34,20 @@ #endif #include - -#ifdef UNICODE -#define _UNICODE -#define _tstring wstring -#else -#define _tstring string -#endif -#include #include - -std::_tstring GetMsiProperty( MSIHANDLE handle, const std::_tstring& sProperty ) +std::wstring GetMsiPropertyW( MSIHANDLE handle, const std::wstring& sProperty ) { - std::_tstring result; - TCHAR szDummy[1] = TEXT(""); + std::wstring result; + WCHAR szDummy[1] = L""; DWORD nChars = 0; - if ( MsiGetProperty( handle, sProperty.c_str(), szDummy, &nChars ) == ERROR_MORE_DATA ) + if ( MsiGetPropertyW( handle, sProperty.c_str(), szDummy, &nChars ) == ERROR_MORE_DATA ) { - DWORD nBytes = ++nChars * sizeof(TCHAR); - LPTSTR buffer = reinterpret_cast(_alloca(nBytes)); + DWORD nBytes = ++nChars * sizeof(WCHAR); + PWSTR buffer = reinterpret_cast(_alloca(nBytes)); ZeroMemory( buffer, nBytes ); - MsiGetProperty(handle, sProperty.c_str(), buffer, &nChars); + MsiGetPropertyW(handle, sProperty.c_str(), buffer, &nChars); result = buffer; } @@ -66,9 +60,9 @@ std::_tstring GetMsiProperty( MSIHANDLE handle, const std::_tstring& sProperty ) */ extern "C" UINT __stdcall InstallStartmenuFolderIcon( MSIHANDLE handle ) { - std::_tstring sOfficeMenuFolder = GetMsiProperty( handle, TEXT("OfficeMenuFolder") ); - std::_tstring sDesktopFile = sOfficeMenuFolder + TEXT("Desktop.ini"); - std::_tstring sIconFile = GetMsiProperty( handle, TEXT("INSTALLLOCATION") ) + TEXT("program\\soffice.exe"); + std::wstring sOfficeMenuFolder = GetMsiPropertyW( handle, L"OfficeMenuFolder" ); + std::wstring sDesktopFile = sOfficeMenuFolder + L"Desktop.ini"; + std::wstring sIconFile = GetMsiPropertyW( handle, L"INSTALLLOCATION" ) + L"program\\soffice.exe"; // the Win32 SDK 8.1 deprecates GetVersionEx() #ifdef _WIN32_WINNT_WINBLUE @@ -82,16 +76,16 @@ extern "C" UINT __stdcall InstallStartmenuFolderIcon( MSIHANDLE handle ) if (!bIsVistaOrLater) { - WritePrivateProfileString( - TEXT(".ShellClassInfo"), - TEXT("IconFile"), + WritePrivateProfileStringW( + L".ShellClassInfo", + L"IconFile", sIconFile.c_str(), sDesktopFile.c_str() ); - WritePrivateProfileString( - TEXT(".ShellClassInfo"), - TEXT("IconIndex"), - TEXT("0"), + WritePrivateProfileStringW( + L".ShellClassInfo", + L"IconIndex", + L"0", sDesktopFile.c_str() ); } // else @@ -101,14 +95,14 @@ extern "C" UINT __stdcall InstallStartmenuFolderIcon( MSIHANDLE handle ) // } // The value '0' is to avoid a message like "You Are Deleting a System Folder" warning when deleting or moving the folder. - WritePrivateProfileString( - TEXT(".ShellClassInfo"), - TEXT("ConfirmFileOp"), - TEXT("0"), + WritePrivateProfileStringW( + L".ShellClassInfo", + L"ConfirmFileOp", + L"0", sDesktopFile.c_str() ); - SetFileAttributes( sDesktopFile.c_str(), FILE_ATTRIBUTE_HIDDEN ); - SetFileAttributes( sOfficeMenuFolder.c_str(), FILE_ATTRIBUTE_SYSTEM ); + SetFileAttributesW( sDesktopFile.c_str(), FILE_ATTRIBUTE_HIDDEN ); + SetFileAttributesW( sOfficeMenuFolder.c_str(), FILE_ATTRIBUTE_SYSTEM ); return ERROR_SUCCESS; @@ -116,13 +110,13 @@ extern "C" UINT __stdcall InstallStartmenuFolderIcon( MSIHANDLE handle ) extern "C" UINT __stdcall DeinstallStartmenuFolderIcon(MSIHANDLE handle) { - std::_tstring sOfficeMenuFolder = GetMsiProperty( handle, TEXT("OfficeMenuFolder") ); - std::_tstring sDesktopFile = sOfficeMenuFolder + TEXT("Desktop.ini"); + std::wstring sOfficeMenuFolder = GetMsiPropertyW( handle, L"OfficeMenuFolder" ); + std::wstring sDesktopFile = sOfficeMenuFolder + L"Desktop.ini"; - SetFileAttributes( sDesktopFile.c_str(), FILE_ATTRIBUTE_NORMAL ); - DeleteFile( sDesktopFile.c_str() ); + SetFileAttributesW( sDesktopFile.c_str(), FILE_ATTRIBUTE_NORMAL ); + DeleteFileW( sDesktopFile.c_str() ); - SetFileAttributes( sOfficeMenuFolder.c_str(), FILE_ATTRIBUTE_NORMAL ); + SetFileAttributesW( sOfficeMenuFolder.c_str(), FILE_ATTRIBUTE_NORMAL ); return ERROR_SUCCESS; } -- cgit