diff --git a/.gitattributes b/.gitattributes
index 74286d5..db6e65b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -6,6 +6,7 @@ MSICALib/MSITSCA.vcxproj -text svneol=unset#text/xml
MSICALib/MSITSCA.vcxproj.filters -text svneol=unset#text/xml
MSICALib/MSITSCAOp.cpp -text
MSICALib/MSITSCAOp.h -text
+MSICALib/Naredi.txt -text
MSICALib/StdAfx.cpp -text
MSICALib/StdAfx.h -text
MSICALib/res/MSITSCA.rc -text svneol=unset#unset
diff --git a/MSICALib/MSITSCA.cpp b/MSICALib/MSITSCA.cpp
index 211d0ac..53adbaa 100644
--- a/MSICALib/MSITSCA.cpp
+++ b/MSICALib/MSITSCA.cpp
@@ -115,7 +115,7 @@ UINT MSITSCA_API EvaluateScheduledTasks(MSIHANDLE hInstall)
if (iAction >= INSTALLSTATE_LOCAL) {
// Installing component. Add the task.
PMSIHANDLE hViewTT;
- CMSITSCAOpCreateTask *opCreateTask = new CMSITSCAOpCreateTask(sDisplayName, iAction < INSTALLSTATE_LOCAL, MSITSCA_TASK_TICK_SIZE);
+ CMSITSCAOpCreateTask *opCreateTask = new CMSITSCAOpCreateTask(sDisplayName, MSITSCA_TASK_TICK_SIZE);
assert(opCreateTask);
// Populate the operation with task's data.
diff --git a/MSICALib/MSITSCA.vcxproj b/MSICALib/MSITSCA.vcxproj
index 90a8404..6ab70c8 100644
--- a/MSICALib/MSITSCA.vcxproj
+++ b/MSICALib/MSITSCA.vcxproj
@@ -273,6 +273,7 @@
+
diff --git a/MSICALib/MSITSCA.vcxproj.filters b/MSICALib/MSITSCA.vcxproj.filters
index a03fa1e..b5960ed 100644
--- a/MSICALib/MSITSCA.vcxproj.filters
+++ b/MSICALib/MSITSCA.vcxproj.filters
@@ -50,5 +50,6 @@
Resource Files
+
\ No newline at end of file
diff --git a/MSICALib/MSITSCAOp.cpp b/MSICALib/MSITSCAOp.cpp
index 73f457d..a3b1df5 100644
--- a/MSICALib/MSITSCAOp.cpp
+++ b/MSICALib/MSITSCAOp.cpp
@@ -140,8 +140,7 @@ HRESULT CMSITSCAOpMoveFile::Execute(CMSITSCASession *pSession)
// CMSITSCAOpCreateTask
////////////////////////////////////////////////////////////////////////////
-CMSITSCAOpCreateTask::CMSITSCAOpCreateTask(LPCWSTR pszTaskName, BOOL bForce, int iTicks) :
- m_bForce(bForce),
+CMSITSCAOpCreateTask::CMSITSCAOpCreateTask(LPCWSTR pszTaskName, int iTicks) :
m_dwFlags(0),
m_dwPriority(NORMAL_PRIORITY_CLASS),
m_wIdleMinutes(0),
@@ -173,21 +172,13 @@ HRESULT CMSITSCAOpCreateTask::Execute(CMSITSCASession *pSession)
if (MsiProcessMessage(pSession->m_hInstall, INSTALLMESSAGE_ACTIONDATA, hRecordMsg) == IDCANCEL)
return AtlHresultFromWin32(ERROR_INSTALL_USEREXIT);
- // Load the task to see if it exists.
- hr = pSession->m_pTaskScheduler->Activate(m_sValue, IID_ITask, (IUnknown**)&pTask);
- if (SUCCEEDED(hr)) {
- // The task exists. Release it prematurely before proceeding.
- pTask.Detach()->Release();
- if (m_bForce) {
- // We're supposed to overwrite it. Delete the existing task first.
- // Since task deleting is a complicated job (when rollback/commit support is required), and we do have an operation for just that, we use it.
- CMSITSCAOpDeleteTask opDeleteTask(m_sValue);
- hr = opDeleteTask.Execute(pSession);
- if (FAILED(hr)) return hr;
- } else {
- // The task exists, and we're happy with that.
- return S_OK;
- }
+ {
+ // Delete existing task first.
+ // Since task deleting is a complicated job (when rollback/commit support is required), and we do have an operation just for that, we use it.
+ // Don't worry, CMSITSCAOpDeleteTask::Execute() returns S_OK if task doesn't exist.
+ CMSITSCAOpDeleteTask opDeleteTask(m_sValue);
+ hr = opDeleteTask.Execute(pSession);
+ if (FAILED(hr)) return hr;
}
// Create the new task.
diff --git a/MSICALib/MSITSCAOp.h b/MSICALib/MSITSCAOp.h
index b40f64d..1af2376 100644
--- a/MSICALib/MSITSCAOp.h
+++ b/MSICALib/MSITSCAOp.h
@@ -128,7 +128,7 @@ public:
class CMSITSCAOpCreateTask : public CMSITSCAOpSingleStringOperation
{
public:
- CMSITSCAOpCreateTask(LPCWSTR pszTaskName = L"", BOOL bForce = FALSE, int iTicks = 0);
+ CMSITSCAOpCreateTask(LPCWSTR pszTaskName = L"", int iTicks = 0);
virtual ~CMSITSCAOpCreateTask();
virtual HRESULT Execute(CMSITSCASession *pSession);
@@ -139,7 +139,6 @@ public:
friend inline HRESULT operator >>(CAtlFile &f, CMSITSCAOpCreateTask &op);
protected:
- BOOL m_bForce;
CStringW m_sApplicationName;
CStringW m_sParameters;
CStringW m_sWorkingDirectory;
@@ -351,7 +350,6 @@ inline HRESULT operator <<(CAtlFile &f, const CMSITSCAOpCreateTask &op)
POSITION pos;
hr = f << (const CMSITSCAOpSingleStringOperation&)op; if (FAILED(hr)) return hr;
- hr = f << (int)op.m_bForce; if (FAILED(hr)) return hr;
hr = f << op.m_sApplicationName; if (FAILED(hr)) return hr;
hr = f << op.m_sParameters; if (FAILED(hr)) return hr;
hr = f << op.m_sWorkingDirectory; if (FAILED(hr)) return hr;
@@ -378,7 +376,6 @@ inline HRESULT operator >>(CAtlFile &f, CMSITSCAOpCreateTask &op)
DWORD dwValue;
hr = f >> (CMSITSCAOpSingleStringOperation&)op; if (FAILED(hr)) return hr;
- hr = f >> (int&)dwValue; if (FAILED(hr)) return hr; op.m_bForce = dwValue ? TRUE : FALSE;
hr = f >> op.m_sApplicationName; if (FAILED(hr)) return hr;
hr = f >> op.m_sParameters; if (FAILED(hr)) return hr;
hr = f >> op.m_sWorkingDirectory; if (FAILED(hr)) return hr;
diff --git a/MSICALib/Naredi.txt b/MSICALib/Naredi.txt
new file mode 100644
index 0000000..e16b8ef
--- /dev/null
+++ b/MSICALib/Naredi.txt
@@ -0,0 +1,3 @@
+- Dodano opravilo se ne vidi med opravili v Task Scheduler-ju.
+- Nadgradnja med odstranitvijo prejšnje verzije, izbriše opravilo, ki ga je nova verzija malo prej namestila.
+- Tudi akcije deferred/commit/rollback naj pošiljajo obvestila o napakah.