Dodal sem sporočili o napaki v CMSITSCAOpDeleteFile::Execute() in CMSITSCAOpMoveFile::Execute(). Pri drugih operacijah jih bom dodal, ko bodo dokončane.
This commit is contained in:
parent
033454b291
commit
a53703ab68
@ -135,6 +135,8 @@ i2 L0
|
|||||||
2551 Pri pripravi seznama razvršèenih opravil je prišlo do napake [2].
|
2551 Pri pripravi seznama razvršèenih opravil je prišlo do napake [2].
|
||||||
2552 Pri pisanju v datoteko seznama razporejenih opravil »[2]« je prišlo do napake [3].
|
2552 Pri pisanju v datoteko seznama razporejenih opravil »[2]« je prišlo do napake [3].
|
||||||
2553 Pri nastavljanju parametra »[2]« je prišlo do napake [3].
|
2553 Pri nastavljanju parametra »[2]« je prišlo do napake [3].
|
||||||
|
2554 Pri brisanju datoteke »[2]« je prišlo do napake [3].
|
||||||
|
2555 Pri premikanju datoteke »[2]« v »[3]« je prišlo do napake [4].
|
||||||
<<NOKEEP
|
<<NOKEEP
|
||||||
|
|
||||||
"De.$(CFG).$(PLAT).Error-2.idt" : "Sl.$(CFG).$(PLAT).Error-2.idtx" "..\res\de_DE.po"
|
"De.$(CFG).$(PLAT).Error-2.idt" : "Sl.$(CFG).$(PLAT).Error-2.idtx" "..\res\de_DE.po"
|
||||||
|
@ -43,6 +43,8 @@
|
|||||||
#define ERROR_INSTALL_SCHEDULED_TASKS_OPLIST_CREATE 2551L
|
#define ERROR_INSTALL_SCHEDULED_TASKS_OPLIST_CREATE 2551L
|
||||||
#define ERROR_INSTALL_SCHEDULED_TASKS_SCRIPT_WRITE 2552L
|
#define ERROR_INSTALL_SCHEDULED_TASKS_SCRIPT_WRITE 2552L
|
||||||
#define ERROR_INSTALL_SCHEDULED_TASKS_PROPERTY_SET 2553L
|
#define ERROR_INSTALL_SCHEDULED_TASKS_PROPERTY_SET 2553L
|
||||||
|
#define ERROR_INSTALL_DELETE_FAILED 2554L
|
||||||
|
#define ERROR_INSTALL_MOVE_FAILED 2555L
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
@ -88,21 +88,27 @@ HRESULT CMSITSCAOpDeleteFile::Execute(CMSITSCASession *pSession)
|
|||||||
sBackupName.Format(L"%ls (orig %u)", (LPCWSTR)m_sValue, ++uiCount);
|
sBackupName.Format(L"%ls (orig %u)", (LPCWSTR)m_sValue, ++uiCount);
|
||||||
dwError = ::MoveFileW(m_sValue, sBackupName) ? ERROR_SUCCESS : ::GetLastError();
|
dwError = ::MoveFileW(m_sValue, sBackupName) ? ERROR_SUCCESS : ::GetLastError();
|
||||||
} while (dwError == ERROR_ALREADY_EXISTS);
|
} while (dwError == ERROR_ALREADY_EXISTS);
|
||||||
if (dwError == ERROR_FILE_NOT_FOUND) return S_OK;
|
if (dwError == ERROR_SUCCESS) {
|
||||||
if (dwError != ERROR_SUCCESS) return AtlHresultFromWin32(dwError);
|
|
||||||
|
|
||||||
// Order rollback action to restore from backup copy.
|
// Order rollback action to restore from backup copy.
|
||||||
pSession->m_olRollback.AddHead(new CMSITSCAOpMoveFile(sBackupName, m_sValue));
|
pSession->m_olRollback.AddHead(new CMSITSCAOpMoveFile(sBackupName, m_sValue));
|
||||||
|
|
||||||
// Order commit action to delete backup copy.
|
// Order commit action to delete backup copy.
|
||||||
pSession->m_olCommit.AddTail(new CMSITSCAOpDeleteFile(sBackupName));
|
pSession->m_olCommit.AddTail(new CMSITSCAOpDeleteFile(sBackupName));
|
||||||
|
}
|
||||||
return S_OK;
|
|
||||||
} else {
|
} else {
|
||||||
// Delete the file.
|
// Delete the file.
|
||||||
if (::DeleteFileW(m_sValue)) return S_OK;
|
dwError = ::DeleteFileW(m_sValue) ? ERROR_SUCCESS : ::GetLastError();
|
||||||
dwError = ::GetLastError();
|
}
|
||||||
return dwError == ERROR_FILE_NOT_FOUND ? S_OK : AtlHresultFromWin32(dwError);
|
|
||||||
|
if (dwError == ERROR_SUCCESS || dwError == ERROR_FILE_NOT_FOUND)
|
||||||
|
return S_OK;
|
||||||
|
else {
|
||||||
|
PMSIHANDLE hRecordProg = ::MsiCreateRecord(3);
|
||||||
|
verify(::MsiRecordSetInteger(hRecordProg, 1, ERROR_INSTALL_DELETE_FAILED) == ERROR_SUCCESS);
|
||||||
|
verify(::MsiRecordSetStringW(hRecordProg, 2, m_sValue ) == ERROR_SUCCESS);
|
||||||
|
verify(::MsiRecordSetInteger(hRecordProg, 3, dwError ) == ERROR_SUCCESS);
|
||||||
|
::MsiProcessMessage(pSession->m_hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||||
|
return AtlHresultFromWin32(dwError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,18 +126,25 @@ CMSITSCAOpMoveFile::CMSITSCAOpMoveFile(LPCWSTR pszFileSrc, LPCWSTR pszFileDst, i
|
|||||||
HRESULT CMSITSCAOpMoveFile::Execute(CMSITSCASession *pSession)
|
HRESULT CMSITSCAOpMoveFile::Execute(CMSITSCASession *pSession)
|
||||||
{
|
{
|
||||||
assert(pSession);
|
assert(pSession);
|
||||||
|
DWORD dwError;
|
||||||
|
|
||||||
if (pSession->m_bRollbackEnabled) {
|
|
||||||
// Move the file.
|
// Move the file.
|
||||||
if (::MoveFileW(m_sValue1, m_sValue2)) {
|
dwError = ::MoveFileW(m_sValue1, m_sValue2) ? ERROR_SUCCESS : ::GetLastError();
|
||||||
|
if (dwError == ERROR_SUCCESS) {
|
||||||
|
if (pSession->m_bRollbackEnabled) {
|
||||||
// Order rollback action to move it back.
|
// Order rollback action to move it back.
|
||||||
pSession->m_olRollback.AddHead(new CMSITSCAOpMoveFile(m_sValue2, m_sValue1));
|
pSession->m_olRollback.AddHead(new CMSITSCAOpMoveFile(m_sValue2, m_sValue1));
|
||||||
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
} else
|
|
||||||
return AtlHresultFromLastError();
|
|
||||||
} else {
|
} else {
|
||||||
// Move the file.
|
PMSIHANDLE hRecordProg = ::MsiCreateRecord(4);
|
||||||
return ::MoveFileW(m_sValue1, m_sValue2) ? S_OK : AtlHresultFromLastError();
|
verify(::MsiRecordSetInteger(hRecordProg, 1, ERROR_INSTALL_MOVE_FAILED) == ERROR_SUCCESS);
|
||||||
|
verify(::MsiRecordSetStringW(hRecordProg, 2, m_sValue1 ) == ERROR_SUCCESS);
|
||||||
|
verify(::MsiRecordSetStringW(hRecordProg, 3, m_sValue2 ) == ERROR_SUCCESS);
|
||||||
|
verify(::MsiRecordSetInteger(hRecordProg, 4, dwError ) == ERROR_SUCCESS);
|
||||||
|
::MsiProcessMessage(pSession->m_hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||||
|
return AtlHresultFromWin32(dwError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user