diff options
Diffstat (limited to 'setup_native/source/win32/customactions/shellextensions/registerextensions.cxx')
-rw-r--r-- | setup_native/source/win32/customactions/shellextensions/registerextensions.cxx | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx b/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx index 53066682e397..8139bb664e9e 100644 --- a/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx +++ b/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx @@ -198,13 +198,13 @@ static BOOL RemoveCompleteDirectory( std::_tstring sPath ) extern "C" UINT __stdcall RegisterExtensions(MSIHANDLE handle) { - std::_tstring sInstDir = GetMsiProperty( handle, TEXT("INSTALLLOCATION") ); + // std::_tstring sInstDir = GetMsiProperty( handle, TEXT("INSTALLLOCATION") ); + std::_tstring sInstDir = GetMsiProperty( handle, TEXT("CustomActionData") ); std::_tstring sUnoPkgFile = sInstDir + TEXT("program\\unopkg.exe"); std::_tstring mystr; WIN32_FIND_DATA aFindFileData; - - mystr = "unopkg file: " + sUnoPkgFile; + bool registrationError = false; // Find unopkg.exe HANDLE hFindUnopkg = FindFirstFile( sUnoPkgFile.c_str(), &aFindFileData ); @@ -213,14 +213,27 @@ extern "C" UINT __stdcall RegisterExtensions(MSIHANDLE handle) { // unopkg.exe exists in program directory std::_tstring sCommand = sUnoPkgFile + " sync"; - mystr = "Command: " + sCommand; DWORD exitCode = 0; ExecuteCommand( sCommand.c_str(), & exitCode); + if ( ! fSuccess ) + { + mystr = "ERROR: An error occured during registration of extensions!"; + MessageBox(NULL, mystr.c_str(), "ERROR", MB_OK); + registrationError = true; + } + FindClose( hFindUnopkg ); } - return ERROR_SUCCESS; + if ( registrationError ) + { + return 1; + } + else + { + return ERROR_SUCCESS; + } } |