Za zdaj sem dodal preizkusni projekt z namestitvijo, da lahko na hitro preizkušam izvedbo akcij.

This commit is contained in:
Simon Rozman 2012-11-29 15:13:57 +00:00
parent 74480b06af
commit 5a91e49875
3 changed files with 95 additions and 4 deletions

View File

@ -1,5 +1,7 @@
#include "StdAfx.h"
#pragma comment(lib, "msi.lib")
////////////////////////////////////////////////////////////////////////////
// Globalne spremenljivke
@ -19,6 +21,7 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpRes
switch (dwReason) {
case DLL_PROCESS_ATTACH:
MSITSCA::hInstance = hInstance;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
@ -33,9 +36,84 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpRes
// Javne funkcije
////////////////////////////////////////////////////////////////////
UINT MSITSCA_API InstallScheduledTask(MSIHANDLE hSession)
UINT MSITSCA_API EvaluateScheduledTasks(MSIHANDLE hInstall)
{
UNREFERENCED_PARAMETER(hSession);
UNREFERENCED_PARAMETER(hInstall);
return ERROR_SUCCESS;
UINT uiResult;
BOOL bIsCoInitialized = SUCCEEDED(::CoInitialize(NULL));
CString msg;
msg.Format(_T("Pripni razhrošèevalnik na proces %u."), ::GetCurrentProcessId());
::MessageBox(NULL, msg, _T("MSITSCA"), MB_OK);
uiResult = ERROR_SUCCESS;
if (bIsCoInitialized) ::CoUninitialize();
return uiResult;
}
UINT MSITSCA_API InstallScheduledTasks(MSIHANDLE hInstall)
{
UNREFERENCED_PARAMETER(hInstall);
assert(::MsiGetMode(hInstall, MSIRUNMODE_SCHEDULED));
UINT uiResult;
BOOL bIsCoInitialized = SUCCEEDED(::CoInitialize(NULL));
CString msg;
msg.Format(_T("Pripni razhrošèevalnik na proces %u."), ::GetCurrentProcessId());
::MessageBox(NULL, msg, _T("MSITSCA"), MB_OK);
uiResult = ERROR_SUCCESS;
if (bIsCoInitialized) ::CoUninitialize();
return uiResult;
}
UINT MSITSCA_API CommitScheduledTasks(MSIHANDLE hInstall)
{
UNREFERENCED_PARAMETER(hInstall);
assert(::MsiGetMode(hInstall, MSIRUNMODE_COMMIT));
UINT uiResult;
BOOL bIsCoInitialized = SUCCEEDED(::CoInitialize(NULL));
uiResult = ERROR_SUCCESS;
if (bIsCoInitialized) ::CoUninitialize();
return uiResult;
}
UINT MSITSCA_API RollbackScheduledTasks(MSIHANDLE hInstall)
{
UNREFERENCED_PARAMETER(hInstall);
assert(::MsiGetMode(hInstall, MSIRUNMODE_ROLLBACK));
UINT uiResult;
BOOL bIsCoInitialized = SUCCEEDED(::CoInitialize(NULL));
uiResult = ERROR_SUCCESS;
if (bIsCoInitialized) ::CoUninitialize();
return uiResult;
}
UINT MSITSCA_API RemoveScheduledTasks(MSIHANDLE hInstall)
{
UNREFERENCED_PARAMETER(hInstall);
UINT uiResult;
BOOL bIsCoInitialized = SUCCEEDED(::CoInitialize(NULL));
CString msg;
msg.Format(_T("Pripni razhrošèevalnik na proces %u."), ::GetCurrentProcessId());
::MessageBox(NULL, msg, _T("MSITSCA"), MB_OK);
uiResult = ERROR_SUCCESS;
if (bIsCoInitialized) ::CoUninitialize();
return uiResult;
}

View File

@ -49,7 +49,10 @@
extern "C" {
#endif
UINT MSITSCA_API InstallScheduledTask(MSIHANDLE hSession);
UINT MSITSCA_API InstallScheduledTasks(MSIHANDLE hInstall);
UINT MSITSCA_API CommitScheduledTasks(MSIHANDLE hInstall);
UINT MSITSCA_API RollbackScheduledTasks(MSIHANDLE hInstall);
UINT MSITSCA_API RemoveScheduledTasks(MSIHANDLE hInstall);
#ifdef __cplusplus
}

View File

@ -34,3 +34,13 @@ using namespace ATL;
#include "BuildNum.h"
#include "MSITSCA.h"
#include <assert.h>
#include <msi.h>
#include <msiquery.h>
#ifdef NDEBUG
#define verify(expr) ((void)(expr))
#else
#define verify(expr) assert(expr)
#endif