Projekta MSICATS in MSICACert sem združil v MSICA, ker sta tako ali tako vsebovala kodo drug od drugega (95 % kode je bilo iz skupne knjižnice MSICALib.
This commit is contained in:
parent
b4750608b3
commit
5aabd7a036
36
.gitattributes
vendored
36
.gitattributes
vendored
@ -1,17 +1,17 @@
|
||||
* text=auto !eol
|
||||
/MSICA.sln svneol=CRLF#text/plain eol=crlf
|
||||
MSICACert/L10N/sl_SI.po -text
|
||||
MSICACert/MSIBuild/Makefile -text
|
||||
MSICACert/MSIBuild/build_all.bat -text
|
||||
MSICACert/MSIBuild/clean_all.bat -text
|
||||
MSICACert/MSICACert.cpp -text
|
||||
MSICACert/MSICACert.h -text
|
||||
MSICACert/MSICACert.vcxproj -text svneol=unset#text/xml
|
||||
MSICACert/MSICACert.vcxproj.filters -text svneol=unset#text/xml
|
||||
MSICACert/res/MSICACert.rc -text svneol=unset#unset
|
||||
MSICACert/res/MSICACert.rcx -text svneol=unset#unset
|
||||
MSICACert/stdafx.cpp -text
|
||||
MSICACert/stdafx.h -text
|
||||
MSICA/L10N/sl_SI.po -text
|
||||
MSICA/MSIBuild/Makefile -text
|
||||
MSICA/MSIBuild/build_all.bat -text
|
||||
MSICA/MSIBuild/clean_all.bat -text
|
||||
MSICA/MSICA.cpp -text
|
||||
MSICA/MSICA.h -text
|
||||
MSICA/MSICA.vcxproj -text svneol=unset#text/xml
|
||||
MSICA/MSICA.vcxproj.filters -text svneol=unset#text/xml
|
||||
MSICA/res/MSICA.rc -text svneol=unset#unset
|
||||
MSICA/res/MSICA.rcx -text svneol=unset#unset
|
||||
MSICA/stdafx.cpp -text
|
||||
MSICA/stdafx.h -text
|
||||
MSICALib/L10N/sl_SI.po -text
|
||||
MSICALib/MSIBuild/Makefile -text
|
||||
MSICALib/MSIBuild/build_all.bat -text
|
||||
@ -27,18 +27,6 @@ MSICALib/OpSvc.cpp -text
|
||||
MSICALib/OpTS.cpp -text
|
||||
MSICALib/stdafx.cpp -text
|
||||
MSICALib/stdafx.h -text
|
||||
MSICATS/L10N/sl_SI.po -text
|
||||
MSICATS/MSIBuild/Makefile -text
|
||||
MSICATS/MSIBuild/build_all.bat -text
|
||||
MSICATS/MSIBuild/clean_all.bat -text
|
||||
MSICATS/MSICATS.cpp -text
|
||||
MSICATS/MSICATS.h -text
|
||||
MSICATS/MSICATS.vcxproj -text svneol=unset#text/xml
|
||||
MSICATS/MSICATS.vcxproj.filters -text svneol=unset#text/xml
|
||||
MSICATS/res/MSICATS.rc -text svneol=unset#unset
|
||||
MSICATS/res/MSICATS.rcx -text svneol=unset#unset
|
||||
MSICATS/stdafx.cpp -text
|
||||
MSICATS/stdafx.h -text
|
||||
include/Debug.props -text svneol=unset#text/xml
|
||||
include/Release.props -text svneol=unset#text/xml
|
||||
include/Win32.props -text svneol=unset#text/xml
|
||||
|
36
.gitignore
vendored
36
.gitignore
vendored
@ -1,18 +1,18 @@
|
||||
/*.opensdf
|
||||
/*.sdf
|
||||
/*.suo
|
||||
MSICACert/*.user
|
||||
MSICACert/L10N/*.mo
|
||||
MSICACert/MSIBuild/*-1.idt
|
||||
MSICACert/MSIBuild/*-2.idt
|
||||
MSICACert/MSIBuild/*-2.idtx
|
||||
MSICACert/MSIBuild/*.Binary-1
|
||||
MSICACert/MSIBuild/*.Binary-2
|
||||
MSICACert/MSIBuild/*.Icon-1
|
||||
MSICACert/MSIBuild/*.Icon-2
|
||||
MSICACert/MSIBuild/*.lst
|
||||
MSICACert/MSIBuild/*.msm
|
||||
MSICACert/temp
|
||||
MSICA/*.user
|
||||
MSICA/L10N/*.mo
|
||||
MSICA/MSIBuild/*-1.idt
|
||||
MSICA/MSIBuild/*-2.idt
|
||||
MSICA/MSIBuild/*-2.idtx
|
||||
MSICA/MSIBuild/*.Binary-1
|
||||
MSICA/MSIBuild/*.Binary-2
|
||||
MSICA/MSIBuild/*.Icon-1
|
||||
MSICA/MSIBuild/*.Icon-2
|
||||
MSICA/MSIBuild/*.lst
|
||||
MSICA/MSIBuild/*.msm
|
||||
MSICA/temp
|
||||
MSICALib/*.user
|
||||
MSICALib/L10N/*.mo
|
||||
MSICALib/MSIBuild/*-1.idt
|
||||
@ -25,17 +25,5 @@ MSICALib/MSIBuild/*.Icon-2
|
||||
MSICALib/MSIBuild/*.lst
|
||||
MSICALib/MSIBuild/*.msm
|
||||
MSICALib/temp
|
||||
MSICATS/*.user
|
||||
MSICATS/L10N/*.mo
|
||||
MSICATS/MSIBuild/*-1.idt
|
||||
MSICATS/MSIBuild/*-2.idt
|
||||
MSICATS/MSIBuild/*-2.idtx
|
||||
MSICATS/MSIBuild/*.Binary-1
|
||||
MSICATS/MSIBuild/*.Binary-2
|
||||
MSICATS/MSIBuild/*.Icon-1
|
||||
MSICATS/MSIBuild/*.Icon-2
|
||||
MSICATS/MSIBuild/*.lst
|
||||
MSICATS/MSIBuild/*.msm
|
||||
MSICATS/temp
|
||||
/ipch
|
||||
/output
|
||||
|
12
MSICA.sln
12
MSICA.sln
@ -3,15 +3,13 @@ Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MSICALib", "MSICALib\MSICALib.vcxproj", "{8552EE55-177E-4F51-B51B-BAF7D6462CDE}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MSICATS", "MSICATS\MSICATS.vcxproj", "{A7D9EBC1-1E64-4399-9C88-6692F8742153}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MSICA", "MSICA\MSICA.vcxproj", "{A7D9EBC1-1E64-4399-9C88-6692F8742153}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F3D5C008-7728-49CA-84F1-12C186FC87F8}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
include\version.h = include\version.h
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MSICACert", "MSICACert\MSICACert.vcxproj", "{0379563D-9835-44AC-928E-24D4E316CE5D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
@ -36,14 +34,6 @@ Global
|
||||
{A7D9EBC1-1E64-4399-9C88-6692F8742153}.Release|Win32.Build.0 = Release|Win32
|
||||
{A7D9EBC1-1E64-4399-9C88-6692F8742153}.Release|x64.ActiveCfg = Release|x64
|
||||
{A7D9EBC1-1E64-4399-9C88-6692F8742153}.Release|x64.Build.0 = Release|x64
|
||||
{0379563D-9835-44AC-928E-24D4E316CE5D}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0379563D-9835-44AC-928E-24D4E316CE5D}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0379563D-9835-44AC-928E-24D4E316CE5D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0379563D-9835-44AC-928E-24D4E316CE5D}.Debug|x64.Build.0 = Debug|x64
|
||||
{0379563D-9835-44AC-928E-24D4E316CE5D}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0379563D-9835-44AC-928E-24D4E316CE5D}.Release|Win32.Build.0 = Release|Win32
|
||||
{0379563D-9835-44AC-928E-24D4E316CE5D}.Release|x64.ActiveCfg = Release|x64
|
||||
{0379563D-9835-44AC-928E-24D4E316CE5D}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -1,8 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: MSICATS\n"
|
||||
"Project-Id-Version: MSICA\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-03-14 11:12+0100\n"
|
||||
"POT-Creation-Date: 2014-03-20 13:36+0100\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <simon.rozman@amebis.si>\n"
|
||||
@ -20,19 +20,19 @@ msgstr ""
|
||||
# Language Code and Windows Charset (hexadecimal)
|
||||
# If we do not intend to provide different localization of same base language (like merging Portugal Portugeese and Brasil Portugese into the same Portugeese), use the code of Microsoft defined default sublanguage.
|
||||
# For example: Use LANG_PORTUGUESE + SUBLANG_DEFAULT = 0x416, although 0x416 represents Brasil Portugese (too).
|
||||
#: res/MSICATS.rcx:42
|
||||
#: res/MSICA.rcx:42
|
||||
msgid "040904e4"
|
||||
msgstr "042404e2"
|
||||
|
||||
# Language Code (hexadecimal)
|
||||
# If we do not intend to provide different localization of same base language (like merging Portugal Portugeese and Brasil Portugese into the same Portugeese), use the code of Microsoft defined default sublanguage.
|
||||
# For example: Use LANG_PORTUGUESE + SUBLANG_DEFAULT = 0x416, although 0x416 represents Brasil Portugese (too).
|
||||
#: res/MSICATS.rcx:60
|
||||
#: res/MSICA.rcx:60
|
||||
msgid "0x409"
|
||||
msgstr "0x424"
|
||||
|
||||
# Windows charset for this language (decimal)
|
||||
#: res/MSICATS.rcx:60 MSIBuild/En.Win32.Debug.ActionText-2.idtx:3
|
||||
#: res/MSICA.rcx:60 MSIBuild/En.Win32.Debug.ActionText-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:3
|
||||
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:3
|
||||
#: MSIBuild/En.x64.Release.ActionText-2.idtx:3
|
||||
@ -40,37 +40,33 @@ msgid "1252"
|
||||
msgstr "1250"
|
||||
|
||||
# The name of the constant in RC to include the resources in this language.
|
||||
#: res/MSICATS.rcx:41 res/MSICATS.rcx:59 res/MSICATS.rcx:75
|
||||
#: res/MSICA.rcx:41 res/MSICA.rcx:59 res/MSICA.rcx:75
|
||||
msgid "AFX_TARG_ENU"
|
||||
msgstr "AFX_TARG_SLV"
|
||||
|
||||
#: res/MSICATS.rcx:44
|
||||
#: res/MSICA.rcx:44
|
||||
msgid "Amebis, d. o. o., Kamnik"
|
||||
msgstr "Amebis, d. o. o., Kamnik"
|
||||
|
||||
#: res/MSICATS.rcx:48
|
||||
#: res/MSICA.rcx:48
|
||||
msgid "Copyright © Amebis, d. o. o., Kamnik, 2012"
|
||||
msgstr "Vse pravice pridržane © Amebis, d. o. o., Kamnik, 2012"
|
||||
|
||||
#: res/MSICA.rcx:45
|
||||
msgid "Installation Support Library"
|
||||
msgstr "Podporna knjižnica za namestitve"
|
||||
|
||||
# Language Identifier (see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318693(v=vs.85).aspx)
|
||||
#: res/MSICATS.rcx:77
|
||||
#: res/MSICA.rcx:77
|
||||
msgid "LANG_ENGLISH"
|
||||
msgstr "LANG_SLOVENIAN"
|
||||
|
||||
#: res/MSICATS.rcx:49
|
||||
#: res/MSICA.rcx:47 res/MSICA.rcx:49
|
||||
msgid "MSICA"
|
||||
msgstr "MSICA"
|
||||
|
||||
#: res/MSICATS.rcx:47
|
||||
msgid "MSICATS"
|
||||
msgstr "MSICATS"
|
||||
|
||||
#: res/MSICATS.rcx:45
|
||||
msgid "Scheduled Task Installation Support Library"
|
||||
msgstr "Podporna knjižnica za nameščanje načrtovanih opravil"
|
||||
|
||||
# Sublanguage Identifier (see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318693(v=vs.85).aspx)
|
||||
#: res/MSICATS.rcx:77
|
||||
#: res/MSICA.rcx:77
|
||||
msgid "SUBLANG_DEFAULT"
|
||||
msgstr "SUBLANG_DEFAULT"
|
||||
|
||||
@ -78,12 +74,32 @@ msgstr "SUBLANG_DEFAULT"
|
||||
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.ActionText-2.idtx:4
|
||||
msgid "Registering scheduled tasks"
|
||||
msgstr "Registracija razporejenih opravil"
|
||||
msgid "Certificate: [1]"
|
||||
msgstr "Digitalno potrdilo: [1]"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.ActionText-2.idtx:4
|
||||
msgid "Installing certificates"
|
||||
msgstr "Nameščanje digitalnih potrdil"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.ActionText-2.idtx:5
|
||||
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:5
|
||||
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:5
|
||||
#: MSIBuild/En.x64.Release.ActionText-2.idtx:5
|
||||
msgid "Registering scheduled tasks"
|
||||
msgstr "Registracija razporejenih opravil"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.ActionText-2.idtx:5
|
||||
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:5
|
||||
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:5
|
||||
#: MSIBuild/En.x64.Release.ActionText-2.idtx:5
|
||||
msgid "Scheduled task: [1]"
|
||||
msgstr "Razporejeno opravilo: [1]"
|
||||
|
||||
#~ msgid "Scheduled Task Installation Support Library"
|
||||
#~ msgstr "Podporna knjižnica za nameščanje načrtovanih opravil"
|
||||
|
||||
#~ msgid "MSICACert"
|
||||
#~ msgstr "MSICACert"
|
@ -14,6 +14,13 @@ All :: "$(LANG).$(PLAT).$(CFG)._Validation-1.idt"
|
||||
Table Column Nullable MinValue MaxValue KeyTable KeyColumn Category Set Description
|
||||
s32 s32 s4 I4 I4 S255 I2 S32 S255 S255
|
||||
_Validation Table Column
|
||||
Certificate Certificate N Identifier Primary key, non-localized token.
|
||||
Certificate Store N Formatted MY;Root;Trust;CA Certificate store name for CertOpenStore() function call. The store provider is always CERT_STORE_PROV_SYSTEM. Therefore, possible values are: MY, Root, Trust, or CA.
|
||||
Certificate Flags N DoubleInteger Flags for CertOpenStore() function call.
|
||||
Certificate Encoding N DoubleInteger 0;1;65536;65537 Certificate encoding (combination of X509_ASN_ENCODING(1) and PKCS_7_ASN_ENCODING(65536) flags).
|
||||
Certificate Binary_ N Binary 1 Identifier The certificate file. The binary information is looked up from the Binary Table.
|
||||
Certificate Condition Y Condition Optional expression which skips the certificate if evaluates to expFalse. If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.
|
||||
Certificate Component_ N Component 1 Identifier Component the certificate is part of.
|
||||
ScheduledTask Task N Identifier Primary key, non-localized token.
|
||||
ScheduledTask DisplayName N Formatted Task name.
|
||||
ScheduledTask Application N Formatted Task application name.
|
||||
@ -60,6 +67,7 @@ All :: "$(LANG).$(PLAT).$(CFG).ActionText-2.idt"
|
||||
Action Description Template
|
||||
s$(MSIBUILD_LENGTH_ID) L0 L0
|
||||
1252 ActionText Action
|
||||
InstallCertificates Installing certificates Certificate: [1]
|
||||
InstallScheduledTasks Registering scheduled tasks Scheduled task: [1]
|
||||
<<NOKEEP
|
||||
|
||||
@ -81,7 +89,7 @@ InstallScheduledTasks Registering scheduled tasks Scheduled task: [1]
|
||||
|
||||
All :: \
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1.idt" \
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\MSICATS.dll"
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\MSICA.dll"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1.idt" : "Makefile" "..\..\..\include\MSIBuildCfg.mak" "$(LANG).$(PLAT).$(CFG).Binary-1"
|
||||
-if exist $@ del /f /q $@
|
||||
@ -89,13 +97,27 @@ All :: \
|
||||
Name Data
|
||||
s$(MSIBUILD_LENGTH_ID) v0
|
||||
Binary Name
|
||||
binMSICATS.dll MSICATS.dll
|
||||
binMSICA.dll MSICA.dll
|
||||
<<NOKEEP
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\MSICATS.dll" : "..\..\output\$(PLAT).$(CFG)\MSICATS.dll"
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\MSICA.dll" : "..\..\output\$(PLAT).$(CFG)\MSICA.dll"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
|
||||
######################################################################
|
||||
# Certificate
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).Certificate-1.idt"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Certificate-1.idt" : "Makefile" "..\..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Certificate Store Flags Encoding Binary_ Condition Component_
|
||||
s$(MSIBUILD_LENGTH_ID) s255 i4 i4 s$(MSIBUILD_LENGTH_ID) S255 s$(MSIBUILD_LENGTH_ID)
|
||||
Certificate Certificate
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# CustomAction
|
||||
|
||||
@ -107,10 +129,14 @@ All :: "$(LANG).$(PLAT).$(CFG).CustomAction-1.idt"
|
||||
Action Type Source Target
|
||||
s$(MSIBUILD_LENGTH_ID) i2 S$(MSIBUILD_LENGTH_ID) S255
|
||||
CustomAction Action
|
||||
EvaluateScheduledTasks 1 binMSICATS.dll EvaluateSequence
|
||||
InstallScheduledTasks 3073 binMSICATS.dll ExecuteSequence
|
||||
RollbackScheduledTasks 3329 binMSICATS.dll ExecuteSequence
|
||||
CommitScheduledTasks 3585 binMSICATS.dll ExecuteSequence
|
||||
EvaluateCertificates 1 binMSICACert.dll EvaluateCertificates
|
||||
InstallCertificates 3073 binMSICACert.dll ExecuteSequence
|
||||
RollbackCertificates 3329 binMSICACert.dll ExecuteSequence
|
||||
CommitCertificates 3585 binMSICACert.dll ExecuteSequence
|
||||
EvaluateScheduledTasks 1 binMSICA.dll EvaluateScheduledTasks
|
||||
InstallScheduledTasks 3073 binMSICA.dll ExecuteSequence
|
||||
RollbackScheduledTasks 3329 binMSICA.dll ExecuteSequence
|
||||
CommitScheduledTasks 3585 binMSICA.dll ExecuteSequence
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
@ -125,6 +151,10 @@ All :: "$(LANG).$(PLAT).$(CFG).InstallExecuteSequence-1.idt"
|
||||
Action Condition Sequence
|
||||
s$(MSIBUILD_LENGTH_ID) S255 I2
|
||||
InstallExecuteSequence Action
|
||||
EvaluateCertificates 6577
|
||||
RollbackCertificates 6576
|
||||
InstallCertificates 6578
|
||||
CommitCertificates 6579
|
||||
EvaluateScheduledTasks 6580
|
||||
RollbackScheduledTasks 6581
|
||||
InstallScheduledTasks 6582
|
@ -5,7 +5,8 @@
|
||||
// Local constants
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define MSICACERT_CERT_TICK_SIZE (4*1024)
|
||||
#define MSICA_CERT_TICK_SIZE (4*1024)
|
||||
#define MSICA_TASK_TICK_SIZE (16*1024)
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
@ -25,7 +26,7 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpRes
|
||||
// Exported functions
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
UINT MSICACERT_API EvaluateSequence(MSIHANDLE hInstall)
|
||||
UINT MSICA_API EvaluateCertificates(MSIHANDLE hInstall)
|
||||
{
|
||||
//::MessageBox(NULL, _T(__FUNCTION__), _T("MSICACert"), MB_OK);
|
||||
|
||||
@ -134,15 +135,15 @@ UINT MSICACERT_API EvaluateSequence(MSIHANDLE hInstall)
|
||||
|
||||
if (iAction >= INSTALLSTATE_LOCAL) {
|
||||
// Component is or should be installed. Install the certificate.
|
||||
olExecute.AddTail(new MSICA::COpCertInstall(binCert.GetData(), binCert.GetCount(), sStore, iEncoding, iFlags, MSICACERT_CERT_TICK_SIZE));
|
||||
olExecute.AddTail(new MSICA::COpCertInstall(binCert.GetData(), binCert.GetCount(), sStore, iEncoding, iFlags, MSICA_CERT_TICK_SIZE));
|
||||
} else if (iAction >= INSTALLSTATE_REMOVED) {
|
||||
// Component is installed, but should be degraded to advertised/removed. Delete the certificate.
|
||||
olExecute.AddTail(new MSICA::COpCertRemove(binCert.GetData(), binCert.GetCount(), sStore, iEncoding, iFlags, MSICACERT_CERT_TICK_SIZE));
|
||||
olExecute.AddTail(new MSICA::COpCertRemove(binCert.GetData(), binCert.GetCount(), sStore, iEncoding, iFlags, MSICA_CERT_TICK_SIZE));
|
||||
}
|
||||
|
||||
// The amount of tick space to add for each certificate to progress indicator.
|
||||
::MsiRecordSetInteger(hRecordProg, 1, 3 );
|
||||
::MsiRecordSetInteger(hRecordProg, 2, MSICACERT_CERT_TICK_SIZE);
|
||||
::MsiRecordSetInteger(hRecordProg, 1, 3 );
|
||||
::MsiRecordSetInteger(hRecordProg, 2, MSICA_CERT_TICK_SIZE);
|
||||
if (::MsiProcessMessage(hInstall, INSTALLMESSAGE_PROGRESS, hRecordProg) == IDCANCEL) { uiResult = ERROR_INSTALL_USEREXIT; break; }
|
||||
}
|
||||
::MsiViewClose(hViewCert);
|
||||
@ -176,9 +177,141 @@ UINT MSICACERT_API EvaluateSequence(MSIHANDLE hInstall)
|
||||
}
|
||||
|
||||
|
||||
UINT MSICACERT_API ExecuteSequence(MSIHANDLE hInstall)
|
||||
UINT MSICA_API EvaluateScheduledTasks(MSIHANDLE hInstall)
|
||||
{
|
||||
//::MessageBox(NULL, _T(__FUNCTION__), _T("MSICACert"), MB_OK);
|
||||
UINT uiResult;
|
||||
BOOL bIsCoInitialized = SUCCEEDED(::CoInitialize(NULL));
|
||||
MSICA::COpList olExecute;
|
||||
BOOL bRollbackEnabled;
|
||||
PMSIHANDLE
|
||||
hDatabase,
|
||||
hRecordProg = ::MsiCreateRecord(3);
|
||||
ATL::CAtlString sValue;
|
||||
|
||||
// Check and add the rollback enabled state.
|
||||
uiResult = ::MsiGetProperty(hInstall, _T("RollbackDisabled"), sValue);
|
||||
bRollbackEnabled = uiResult == NO_ERROR ?
|
||||
_ttoi(sValue) || !sValue.IsEmpty() && _totlower(sValue.GetAt(0)) == _T('y') ? FALSE : TRUE :
|
||||
TRUE;
|
||||
olExecute.AddTail(new MSICA::COpRollbackEnable(bRollbackEnabled));
|
||||
|
||||
// Open MSI database.
|
||||
hDatabase = ::MsiGetActiveDatabase(hInstall);
|
||||
if (hDatabase) {
|
||||
// Check if ScheduledTask table exists. If it doesn't exist, there's nothing to do.
|
||||
MSICONDITION condition = ::MsiDatabaseIsTablePersistent(hDatabase, _T("ScheduledTask"));
|
||||
if (condition == MSICONDITION_FALSE || condition == MSICONDITION_TRUE) {
|
||||
PMSIHANDLE hViewST;
|
||||
|
||||
// Prepare a query to get a list/view of tasks.
|
||||
uiResult = ::MsiDatabaseOpenView(hDatabase, _T("SELECT Task,DisplayName,Application,Parameters,Directory_,Flags,Priority,User,Password,Author,Description,IdleMin,IdleDeadline,MaxRuntime,Condition,Component_ FROM ScheduledTask"), &hViewST);
|
||||
if (uiResult == NO_ERROR) {
|
||||
// Execute query!
|
||||
uiResult = ::MsiViewExecute(hViewST, NULL);
|
||||
if (uiResult == NO_ERROR) {
|
||||
//ATL::CAtlString sComponent;
|
||||
ATL::CAtlStringW sDisplayName;
|
||||
|
||||
for (;;) {
|
||||
PMSIHANDLE hRecord;
|
||||
INSTALLSTATE iInstalled, iAction;
|
||||
|
||||
// Fetch one record from the view.
|
||||
uiResult = ::MsiViewFetch(hViewST, &hRecord);
|
||||
if (uiResult == ERROR_NO_MORE_ITEMS) {
|
||||
uiResult = NO_ERROR;
|
||||
break;
|
||||
} else if (uiResult != NO_ERROR)
|
||||
break;
|
||||
|
||||
// Read and evaluate task's condition.
|
||||
uiResult = ::MsiRecordGetString(hRecord, 15, sValue);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
condition = ::MsiEvaluateCondition(hInstall, sValue);
|
||||
if (condition == MSICONDITION_FALSE)
|
||||
continue;
|
||||
else if (condition == MSICONDITION_ERROR) {
|
||||
uiResult = ERROR_INVALID_FIELD;
|
||||
break;
|
||||
}
|
||||
|
||||
// Read task's Component ID.
|
||||
uiResult = ::MsiRecordGetString(hRecord, 16, sValue);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
|
||||
// Get the component state.
|
||||
uiResult = ::MsiGetComponentState(hInstall, sValue, &iInstalled, &iAction);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
|
||||
// Get task's DisplayName.
|
||||
uiResult = ::MsiRecordFormatStringW(hInstall, hRecord, 2, sDisplayName);
|
||||
|
||||
if (iAction >= INSTALLSTATE_LOCAL) {
|
||||
// Component is or should be installed. Create the task.
|
||||
PMSIHANDLE hViewTT;
|
||||
MSICA::COpTaskCreate *opCreateTask = new MSICA::COpTaskCreate(sDisplayName, MSICA_TASK_TICK_SIZE);
|
||||
|
||||
// Populate the operation with task's data.
|
||||
uiResult = opCreateTask->SetFromRecord(hInstall, hRecord);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
|
||||
// Perform another query to get task's triggers.
|
||||
uiResult = ::MsiDatabaseOpenView(hDatabase, _T("SELECT Trigger,BeginDate,EndDate,StartTime,StartTimeRand,MinutesDuration,MinutesInterval,Flags,Type,DaysInterval,WeeksInterval,DaysOfTheWeek,DaysOfMonth,WeekOfMonth,MonthsOfYear FROM TaskTrigger WHERE Task_=?"), &hViewTT);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
|
||||
// Execute query!
|
||||
uiResult = ::MsiViewExecute(hViewTT, hRecord);
|
||||
if (uiResult == NO_ERROR) {
|
||||
// Populate trigger list.
|
||||
uiResult = opCreateTask->SetTriggersFromView(hViewTT);
|
||||
::MsiViewClose(hViewTT);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
} else
|
||||
break;
|
||||
|
||||
olExecute.AddTail(opCreateTask);
|
||||
} else if (iAction >= INSTALLSTATE_REMOVED) {
|
||||
// Component is installed, but should be degraded to advertised/removed. Delete the task.
|
||||
olExecute.AddTail(new MSICA::COpTaskDelete(sDisplayName, MSICA_TASK_TICK_SIZE));
|
||||
}
|
||||
|
||||
// The amount of tick space to add for each task to progress indicator.
|
||||
::MsiRecordSetInteger(hRecordProg, 1, 3 );
|
||||
::MsiRecordSetInteger(hRecordProg, 2, MSICA_TASK_TICK_SIZE);
|
||||
if (::MsiProcessMessage(hInstall, INSTALLMESSAGE_PROGRESS, hRecordProg) == IDCANCEL) { uiResult = ERROR_INSTALL_USEREXIT; break; }
|
||||
}
|
||||
::MsiViewClose(hViewST);
|
||||
|
||||
if (uiResult == NO_ERROR) {
|
||||
// Save the sequences.
|
||||
uiResult = MSICA::SaveSequence(hInstall, _T("InstallScheduledTasks"), _T("CommitScheduledTasks"), _T("RollbackScheduledTasks"), olExecute);
|
||||
} else if (uiResult != ERROR_INSTALL_USEREXIT) {
|
||||
::MsiRecordSetInteger(hRecordProg, 1, ERROR_INSTALL_OPLIST_CREATE);
|
||||
::MsiRecordSetInteger(hRecordProg, 2, uiResult );
|
||||
::MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||
}
|
||||
} else {
|
||||
::MsiRecordSetInteger(hRecordProg, 1, uiResult);
|
||||
::MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||
}
|
||||
} else {
|
||||
::MsiRecordSetInteger(hRecordProg, 1, uiResult);
|
||||
::MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
uiResult = ERROR_INSTALL_DATABASE_OPEN;
|
||||
::MsiRecordSetInteger(hRecordProg, 1, uiResult);
|
||||
::MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||
}
|
||||
|
||||
olExecute.Free();
|
||||
if (bIsCoInitialized) ::CoUninitialize();
|
||||
return uiResult;
|
||||
}
|
||||
|
||||
|
||||
UINT MSICA_API ExecuteSequence(MSIHANDLE hInstall)
|
||||
{
|
||||
return MSICA::ExecuteSequence(hInstall);
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
#ifndef __MSICATS_H__
|
||||
#define __MSICATS_H__
|
||||
#ifndef __MSICA_H__
|
||||
#define __MSICA_H__
|
||||
|
||||
#include <msi.h>
|
||||
|
||||
@ -8,12 +8,12 @@
|
||||
// Calling declaration
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(MSICATS_DLL)
|
||||
#define MSICATS_API __declspec(dllexport)
|
||||
#elif defined(MSICATS_DLLIMP)
|
||||
#define MSICATS_API __declspec(dllimport)
|
||||
#if defined(MSICA_DLL)
|
||||
#define MSICA_API __declspec(dllexport)
|
||||
#elif defined(MSICA_DLLIMP)
|
||||
#define MSICA_API __declspec(dllimport)
|
||||
#else
|
||||
#define MSICATS_API
|
||||
#define MSICA_API
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -24,11 +24,12 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
UINT MSICATS_API EvaluateSequence(MSIHANDLE hInstall);
|
||||
UINT MSICATS_API ExecuteSequence(MSIHANDLE hInstall);
|
||||
UINT MSICA_API EvaluateCertificates(MSIHANDLE hInstall);
|
||||
UINT MSICA_API EvaluateScheduledTasks(MSIHANDLE hInstall);
|
||||
UINT MSICA_API ExecuteSequence(MSIHANDLE hInstall);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __MSICATS_H__
|
||||
#endif // __MSICA_H__
|
@ -138,7 +138,7 @@
|
||||
<ClCompile />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="MSICATS.cpp" />
|
||||
<ClCompile Include="MSICA.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
@ -147,14 +147,14 @@
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="MSICATS.h" />
|
||||
<ClInclude Include="MSICA.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="res\MSICATS.rc" />
|
||||
<ResourceCompile Include="res\MSICA.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceLocalizator Include="res\MSICATS.rcx" />
|
||||
<ResourceLocalizator Include="res\MSICA.rcx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="L10N\sl_SI.po" />
|
@ -15,7 +15,7 @@
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="MSICATS.cpp">
|
||||
<ClCompile Include="MSICA.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
@ -23,7 +23,7 @@
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="MSICATS.h">
|
||||
<ClInclude Include="MSICA.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stdafx.h">
|
||||
@ -31,12 +31,12 @@
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="res\MSICATS.rc">
|
||||
<ResourceCompile Include="res\MSICA.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceLocalizator Include="res\MSICATS.rcx">
|
||||
<ResourceLocalizator Include="res\MSICA.rcx">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceLocalizator>
|
||||
</ItemGroup>
|
BIN
MSICA/res/MSICA.rc
Normal file
BIN
MSICA/res/MSICA.rc
Normal file
Binary file not shown.
Binary file not shown.
@ -20,7 +20,7 @@
|
||||
#define _WIN32_WINNT 0x0501 // Include Windows XP symbols
|
||||
#define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h
|
||||
#ifdef _WINDLL
|
||||
#define MSICATS_DLL // This is a DLL
|
||||
#define MSICA_DLL // This is a DLL
|
||||
#endif
|
||||
#define _ATL_APARTMENT_THREADED
|
||||
|
||||
@ -34,4 +34,4 @@
|
||||
|
||||
#include "..\MSICALib\MSICALib.h"
|
||||
|
||||
#include "MSICATS.h"
|
||||
#include "MSICA.h"
|
@ -1,95 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: MSICACert\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-03-14 11:10+0100\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
|
||||
"Language-Team: Amebis, d. o. o., Kamnik <simon.rozman@amebis.si>\n"
|
||||
"Language: sl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Generator: Poedit 1.5.7\n"
|
||||
"X-Poedit-SearchPath-0: MSIBuild\n"
|
||||
"X-Poedit-SearchPath-1: res\n"
|
||||
|
||||
# Language Code and Windows Charset (hexadecimal)
|
||||
# If we do not intend to provide different localization of same base language (like merging Portugal Portugeese and Brasil Portugese into the same Portugeese), use the code of Microsoft defined default sublanguage.
|
||||
# For example: Use LANG_PORTUGUESE + SUBLANG_DEFAULT = 0x416, although 0x416 represents Brasil Portugese (too).
|
||||
#: res/MSICACert.rcx:42
|
||||
msgid "040904e4"
|
||||
msgstr "042404e2"
|
||||
|
||||
# Language Code (hexadecimal)
|
||||
# If we do not intend to provide different localization of same base language (like merging Portugal Portugeese and Brasil Portugese into the same Portugeese), use the code of Microsoft defined default sublanguage.
|
||||
# For example: Use LANG_PORTUGUESE + SUBLANG_DEFAULT = 0x416, although 0x416 represents Brasil Portugese (too).
|
||||
#: res/MSICACert.rcx:60
|
||||
msgid "0x409"
|
||||
msgstr "0x424"
|
||||
|
||||
# Windows charset for this language (decimal)
|
||||
#: res/MSICACert.rcx:60 MSIBuild/En.Win32.Debug.ActionText-2.idtx:3
|
||||
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:3
|
||||
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:3
|
||||
#: MSIBuild/En.x64.Release.ActionText-2.idtx:3
|
||||
msgid "1252"
|
||||
msgstr "1250"
|
||||
|
||||
# The name of the constant in RC to include the resources in this language.
|
||||
#: res/MSICACert.rcx:41 res/MSICACert.rcx:59 res/MSICACert.rcx:75
|
||||
msgid "AFX_TARG_ENU"
|
||||
msgstr "AFX_TARG_SLV"
|
||||
|
||||
#: res/MSICACert.rcx:44
|
||||
msgid "Amebis, d. o. o., Kamnik"
|
||||
msgstr "Amebis, d. o. o., Kamnik"
|
||||
|
||||
#: res/MSICACert.rcx:45
|
||||
msgid "Certificate Installation Support Library"
|
||||
msgstr "Podporna knjižnica za nameščanje certifikatov"
|
||||
|
||||
#: res/MSICACert.rcx:48
|
||||
msgid "Copyright © Amebis, d. o. o., Kamnik, 2012"
|
||||
msgstr "Vse pravice pridržane © Amebis, d. o. o., Kamnik, 2012"
|
||||
|
||||
# Language Identifier (see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318693(v=vs.85).aspx)
|
||||
#: res/MSICACert.rcx:77
|
||||
msgid "LANG_ENGLISH"
|
||||
msgstr "LANG_SLOVENIAN"
|
||||
|
||||
#: res/MSICACert.rcx:49
|
||||
msgid "MSICA"
|
||||
msgstr "MSICA"
|
||||
|
||||
#: res/MSICACert.rcx:47
|
||||
msgid "MSICACert"
|
||||
msgstr "MSICACert"
|
||||
|
||||
# Sublanguage Identifier (see http://msdn.microsoft.com/en-us/library/windows/desktop/dd318693(v=vs.85).aspx)
|
||||
#: res/MSICACert.rcx:77
|
||||
msgid "SUBLANG_DEFAULT"
|
||||
msgstr "SUBLANG_DEFAULT"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.ActionText-2.idtx:4
|
||||
msgid "Certificate: [1]"
|
||||
msgstr "Digitalno potrdilo: [1]"
|
||||
|
||||
#: MSIBuild/En.Win32.Debug.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:4
|
||||
#: MSIBuild/En.x64.Release.ActionText-2.idtx:4
|
||||
msgid "Installing certificates"
|
||||
msgstr "Nameščanje digitalnih potrdil"
|
||||
|
||||
#~ msgid "Scheduled task: [1]"
|
||||
#~ msgstr "Razporejeno opravilo: [1]"
|
||||
|
||||
#~ msgid "Registering scheduled tasks"
|
||||
#~ msgstr "Registracija razporejenih opravil"
|
@ -1,128 +0,0 @@
|
||||
!INCLUDE "..\..\..\include\MSIBuildCfg.mak"
|
||||
|
||||
MSIBUILD_IS_LOCALIZEABLE=1
|
||||
|
||||
|
||||
######################################################################
|
||||
# _Validation
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG)._Validation-1.idt"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG)._Validation-1.idt" : "Makefile" "..\..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Table Column Nullable MinValue MaxValue KeyTable KeyColumn Category Set Description
|
||||
s32 s32 s4 I4 I4 S255 I2 S32 S255 S255
|
||||
_Validation Table Column
|
||||
Certificate Certificate N Identifier Primary key, non-localized token.
|
||||
Certificate Store N Formatted MY;Root;Trust;CA Certificate store name for CertOpenStore() function call. The store provider is always CERT_STORE_PROV_SYSTEM. Therefore, possible values are: MY, Root, Trust, or CA.
|
||||
Certificate Flags N DoubleInteger Flags for CertOpenStore() function call.
|
||||
Certificate Encoding N DoubleInteger 0;1;65536;65537 Certificate encoding (combination of X509_ASN_ENCODING(1) and PKCS_7_ASN_ENCODING(65536) flags).
|
||||
Certificate Binary_ N Binary 1 Identifier The certificate file. The binary information is looked up from the Binary Table.
|
||||
Certificate Condition Y Condition Optional expression which skips the certificate if evaluates to expFalse. If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.
|
||||
Certificate Component_ N Component 1 Identifier Component the certificate is part of.
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# ActionText
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).ActionText-2.idt"
|
||||
|
||||
"En.$(PLAT).$(CFG).ActionText-2.idtx" : "Makefile" "..\..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Action Description Template
|
||||
s$(MSIBUILD_LENGTH_ID) L0 L0
|
||||
1252 ActionText Action
|
||||
InstallCertificates Installing certificates Certificate: [1]
|
||||
<<NOKEEP
|
||||
|
||||
"De.$(PLAT).$(CFG).ActionText-2.idt" : "En.$(PLAT).$(CFG).ActionText-2.idtx" "..\L10N\de_DE.po"
|
||||
rcxgettext.exe idtp $@ $**
|
||||
|
||||
"En.$(PLAT).$(CFG).ActionText-2.idt" : "En.$(PLAT).$(CFG).ActionText-2.idtx"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
"It.$(PLAT).$(CFG).ActionText-2.idt" : "En.$(PLAT).$(CFG).ActionText-2.idtx" "..\L10N\it_IT.po"
|
||||
rcxgettext.exe idtp $@ $**
|
||||
|
||||
"Sl.$(PLAT).$(CFG).ActionText-2.idt" : "En.$(PLAT).$(CFG).ActionText-2.idtx" "..\L10N\sl_SI.po"
|
||||
rcxgettext.exe idtp $@ $**
|
||||
|
||||
|
||||
######################################################################
|
||||
# Binary
|
||||
|
||||
All :: \
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1.idt" \
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\MSICACert.dll"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1.idt" : "Makefile" "..\..\..\include\MSIBuildCfg.mak" "$(LANG).$(PLAT).$(CFG).Binary-1"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Name Data
|
||||
s$(MSIBUILD_LENGTH_ID) v0
|
||||
Binary Name
|
||||
binMSICACert.dll MSICACert.dll
|
||||
<<NOKEEP
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Binary-1\MSICACert.dll" : "..\..\output\$(PLAT).$(CFG)\MSICACert.dll"
|
||||
copy /y $** $@ > NUL
|
||||
|
||||
|
||||
######################################################################
|
||||
# Certificate
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).Certificate-1.idt"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).Certificate-1.idt" : "Makefile" "..\..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Certificate Store Flags Encoding Binary_ Condition Component_
|
||||
s$(MSIBUILD_LENGTH_ID) s255 i4 i4 s$(MSIBUILD_LENGTH_ID) S255 s$(MSIBUILD_LENGTH_ID)
|
||||
Certificate Certificate
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# CustomAction
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).CustomAction-1.idt"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).CustomAction-1.idt" : "Makefile" "..\..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Action Type Source Target
|
||||
s$(MSIBUILD_LENGTH_ID) i2 S$(MSIBUILD_LENGTH_ID) S255
|
||||
CustomAction Action
|
||||
EvaluateCertificates 1 binMSICACert.dll EvaluateSequence
|
||||
InstallCertificates 3073 binMSICACert.dll ExecuteSequence
|
||||
RollbackCertificates 3329 binMSICACert.dll ExecuteSequence
|
||||
CommitCertificates 3585 binMSICACert.dll ExecuteSequence
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# InstallExecuteSequence
|
||||
|
||||
All :: "$(LANG).$(PLAT).$(CFG).InstallExecuteSequence-1.idt"
|
||||
|
||||
"$(LANG).$(PLAT).$(CFG).InstallExecuteSequence-1.idt" : "Makefile" "..\..\..\include\MSIBuildCfg.mak"
|
||||
-if exist $@ del /f /q $@
|
||||
move /y << $@ > NUL
|
||||
Action Condition Sequence
|
||||
s$(MSIBUILD_LENGTH_ID) S255 I2
|
||||
InstallExecuteSequence Action
|
||||
EvaluateCertificates 6577
|
||||
RollbackCertificates 6576
|
||||
InstallCertificates 6578
|
||||
CommitCertificates 6579
|
||||
<<NOKEEP
|
||||
|
||||
|
||||
######################################################################
|
||||
# Build MSM module!
|
||||
######################################################################
|
||||
|
||||
!INCLUDE "..\..\..\MSIBuild\MSM.mak"
|
@ -1,34 +0,0 @@
|
||||
#ifndef __MSICACERT_H__
|
||||
#define __MSICACERT_H__
|
||||
|
||||
#include <msi.h>
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Calling declaration
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(MSICACERT_DLL)
|
||||
#define MSICACERT_API __declspec(dllexport)
|
||||
#elif defined(MSICACERT_DLLIMP)
|
||||
#define MSICACERT_API __declspec(dllimport)
|
||||
#else
|
||||
#define MSICACERT_API
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Exported functions
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
UINT MSICACERT_API EvaluateSequence(MSIHANDLE hInstall);
|
||||
UINT MSICACERT_API ExecuteSequence(MSIHANDLE hInstall);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __MSICACERT_H__
|
@ -1,171 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{0379563D-9835-44AC-928E-24D4E316CE5D}</ProjectGuid>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfAtl>Static</UseOfAtl>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfAtl>Static</UseOfAtl>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfAtl>Static</UseOfAtl>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseOfAtl>Static</UseOfAtl>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\rcxgettext.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\include\common.props" />
|
||||
<Import Project="..\include\Win32.props" />
|
||||
<Import Project="..\include\Release.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\include\common.props" />
|
||||
<Import Project="..\include\Win32.props" />
|
||||
<Import Project="..\include\Debug.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\include\common.props" />
|
||||
<Import Project="..\include\x64.props" />
|
||||
<Import Project="..\include\Release.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\include\common.props" />
|
||||
<Import Project="..\include\x64.props" />
|
||||
<Import Project="..\include\Debug.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
<IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
<IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</IgnoreImportLibrary>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
<IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\output\$(Platform).$(Configuration)\</OutDir>
|
||||
<IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</IgnoreImportLibrary>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>%(Filename)_h.h</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile />
|
||||
<ResourceLocalizator>
|
||||
<LanguageCatalogs>L10N\sl_SI.po</LanguageCatalogs>
|
||||
</ResourceLocalizator>
|
||||
<ClCompile />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>%(Filename)_h.h</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile />
|
||||
<ResourceLocalizator>
|
||||
<LanguageCatalogs>L10N\sl_SI.po</LanguageCatalogs>
|
||||
</ResourceLocalizator>
|
||||
<ClCompile />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>%(Filename)_h.h</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile />
|
||||
<ResourceLocalizator>
|
||||
<LanguageCatalogs>L10N\sl_SI.po</LanguageCatalogs>
|
||||
</ResourceLocalizator>
|
||||
<ClCompile />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
</Link>
|
||||
<Midl>
|
||||
<HeaderFileName>%(Filename)_h.h</HeaderFileName>
|
||||
</Midl>
|
||||
<ClCompile />
|
||||
<ResourceLocalizator>
|
||||
<LanguageCatalogs>L10N\sl_SI.po</LanguageCatalogs>
|
||||
</ResourceLocalizator>
|
||||
<ClCompile />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="MSICACert.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="MSICACert.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="res\MSICACert.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceLocalizator Include="res\MSICACert.rcx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="L10N\sl_SI.po" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\MSICALib\MSICALib.vcxproj">
|
||||
<Project>{8552ee55-177e-4f51-b51b-baf7d6462cde}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\rcxgettext.targets" />
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,48 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;rcx;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;po</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="MSICACert.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="MSICACert.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="res\MSICACert.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceLocalizator Include="res\MSICACert.rcx">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceLocalizator>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="L10N\sl_SI.po">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
Binary file not shown.
@ -1,37 +0,0 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently,
|
||||
// but are changed infrequently
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined(_UNICODE) && !defined(UNICODE)
|
||||
#define UNICODE
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32) && !defined(WIN32)
|
||||
#define WIN32
|
||||
#endif
|
||||
|
||||
#ifndef STRICT
|
||||
#define STRICT
|
||||
#endif
|
||||
|
||||
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
|
||||
#define _WIN32_WINNT 0x0501 // Include Windows XP symbols
|
||||
#define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h
|
||||
#ifdef _WINDLL
|
||||
#define MSICACERT_DLL // This is a DLL
|
||||
#endif
|
||||
#define _ATL_APARTMENT_THREADED
|
||||
|
||||
#include <atlbase.h>
|
||||
#include <atlfile.h>
|
||||
#include <atlstr.h>
|
||||
|
||||
#include <corerror.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "..\MSICALib\MSICALib.h"
|
||||
|
||||
#include "MSICACert.h"
|
@ -1,9 +0,0 @@
|
||||
@echo off
|
||||
nmake.exe /ls All LANG=En CFG=Debug PLAT=Win32
|
||||
nmake.exe /ls All LANG=Sl CFG=Debug PLAT=Win32
|
||||
nmake.exe /ls All LANG=En CFG=Debug PLAT=x64
|
||||
nmake.exe /ls All LANG=Sl CFG=Debug PLAT=x64
|
||||
nmake.exe /ls All LANG=En CFG=Release PLAT=Win32
|
||||
nmake.exe /ls All LANG=Sl CFG=Release PLAT=Win32
|
||||
nmake.exe /ls All LANG=En CFG=Release PLAT=x64
|
||||
nmake.exe /ls All LANG=Sl CFG=Release PLAT=x64
|
@ -1,9 +0,0 @@
|
||||
@echo off
|
||||
nmake.exe /ls Clean LANG=En CFG=Debug PLAT=Win32
|
||||
nmake.exe /ls Clean LANG=Sl CFG=Debug PLAT=Win32
|
||||
nmake.exe /ls Clean LANG=En CFG=Debug PLAT=x64
|
||||
nmake.exe /ls Clean LANG=Sl CFG=Debug PLAT=x64
|
||||
nmake.exe /ls Clean LANG=En CFG=Release PLAT=Win32
|
||||
nmake.exe /ls Clean LANG=Sl CFG=Release PLAT=Win32
|
||||
nmake.exe /ls Clean LANG=En CFG=Release PLAT=x64
|
||||
nmake.exe /ls Clean LANG=Sl CFG=Release PLAT=x64
|
@ -1,165 +0,0 @@
|
||||
#include "stdafx.h"
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Local constants
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define MSICATS_TASK_TICK_SIZE (16*1024)
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Global functions
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hInstance);
|
||||
UNREFERENCED_PARAMETER(lpReserved);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Exported functions
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
UINT MSICATS_API EvaluateSequence(MSIHANDLE hInstall)
|
||||
{
|
||||
UINT uiResult;
|
||||
BOOL bIsCoInitialized = SUCCEEDED(::CoInitialize(NULL));
|
||||
MSICA::COpList olExecute;
|
||||
BOOL bRollbackEnabled;
|
||||
PMSIHANDLE
|
||||
hDatabase,
|
||||
hRecordProg = ::MsiCreateRecord(3);
|
||||
ATL::CAtlString sValue;
|
||||
|
||||
// Check and add the rollback enabled state.
|
||||
uiResult = ::MsiGetProperty(hInstall, _T("RollbackDisabled"), sValue);
|
||||
bRollbackEnabled = uiResult == NO_ERROR ?
|
||||
_ttoi(sValue) || !sValue.IsEmpty() && _totlower(sValue.GetAt(0)) == _T('y') ? FALSE : TRUE :
|
||||
TRUE;
|
||||
olExecute.AddTail(new MSICA::COpRollbackEnable(bRollbackEnabled));
|
||||
|
||||
// Open MSI database.
|
||||
hDatabase = ::MsiGetActiveDatabase(hInstall);
|
||||
if (hDatabase) {
|
||||
// Check if ScheduledTask table exists. If it doesn't exist, there's nothing to do.
|
||||
MSICONDITION condition = ::MsiDatabaseIsTablePersistent(hDatabase, _T("ScheduledTask"));
|
||||
if (condition == MSICONDITION_FALSE || condition == MSICONDITION_TRUE) {
|
||||
PMSIHANDLE hViewST;
|
||||
|
||||
// Prepare a query to get a list/view of tasks.
|
||||
uiResult = ::MsiDatabaseOpenView(hDatabase, _T("SELECT Task,DisplayName,Application,Parameters,Directory_,Flags,Priority,User,Password,Author,Description,IdleMin,IdleDeadline,MaxRuntime,Condition,Component_ FROM ScheduledTask"), &hViewST);
|
||||
if (uiResult == NO_ERROR) {
|
||||
// Execute query!
|
||||
uiResult = ::MsiViewExecute(hViewST, NULL);
|
||||
if (uiResult == NO_ERROR) {
|
||||
//ATL::CAtlString sComponent;
|
||||
ATL::CAtlStringW sDisplayName;
|
||||
|
||||
for (;;) {
|
||||
PMSIHANDLE hRecord;
|
||||
INSTALLSTATE iInstalled, iAction;
|
||||
|
||||
// Fetch one record from the view.
|
||||
uiResult = ::MsiViewFetch(hViewST, &hRecord);
|
||||
if (uiResult == ERROR_NO_MORE_ITEMS) {
|
||||
uiResult = NO_ERROR;
|
||||
break;
|
||||
} else if (uiResult != NO_ERROR)
|
||||
break;
|
||||
|
||||
// Read and evaluate task's condition.
|
||||
uiResult = ::MsiRecordGetString(hRecord, 15, sValue);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
condition = ::MsiEvaluateCondition(hInstall, sValue);
|
||||
if (condition == MSICONDITION_FALSE)
|
||||
continue;
|
||||
else if (condition == MSICONDITION_ERROR) {
|
||||
uiResult = ERROR_INVALID_FIELD;
|
||||
break;
|
||||
}
|
||||
|
||||
// Read task's Component ID.
|
||||
uiResult = ::MsiRecordGetString(hRecord, 16, sValue);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
|
||||
// Get the component state.
|
||||
uiResult = ::MsiGetComponentState(hInstall, sValue, &iInstalled, &iAction);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
|
||||
// Get task's DisplayName.
|
||||
uiResult = ::MsiRecordFormatStringW(hInstall, hRecord, 2, sDisplayName);
|
||||
|
||||
if (iAction >= INSTALLSTATE_LOCAL) {
|
||||
// Component is or should be installed. Create the task.
|
||||
PMSIHANDLE hViewTT;
|
||||
MSICA::COpTaskCreate *opCreateTask = new MSICA::COpTaskCreate(sDisplayName, MSICATS_TASK_TICK_SIZE);
|
||||
|
||||
// Populate the operation with task's data.
|
||||
uiResult = opCreateTask->SetFromRecord(hInstall, hRecord);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
|
||||
// Perform another query to get task's triggers.
|
||||
uiResult = ::MsiDatabaseOpenView(hDatabase, _T("SELECT Trigger,BeginDate,EndDate,StartTime,StartTimeRand,MinutesDuration,MinutesInterval,Flags,Type,DaysInterval,WeeksInterval,DaysOfTheWeek,DaysOfMonth,WeekOfMonth,MonthsOfYear FROM TaskTrigger WHERE Task_=?"), &hViewTT);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
|
||||
// Execute query!
|
||||
uiResult = ::MsiViewExecute(hViewTT, hRecord);
|
||||
if (uiResult == NO_ERROR) {
|
||||
// Populate trigger list.
|
||||
uiResult = opCreateTask->SetTriggersFromView(hViewTT);
|
||||
::MsiViewClose(hViewTT);
|
||||
if (uiResult != NO_ERROR) break;
|
||||
} else
|
||||
break;
|
||||
|
||||
olExecute.AddTail(opCreateTask);
|
||||
} else if (iAction >= INSTALLSTATE_REMOVED) {
|
||||
// Component is installed, but should be degraded to advertised/removed. Delete the task.
|
||||
olExecute.AddTail(new MSICA::COpTaskDelete(sDisplayName, MSICATS_TASK_TICK_SIZE));
|
||||
}
|
||||
|
||||
// The amount of tick space to add for each task to progress indicator.
|
||||
::MsiRecordSetInteger(hRecordProg, 1, 3 );
|
||||
::MsiRecordSetInteger(hRecordProg, 2, MSICATS_TASK_TICK_SIZE);
|
||||
if (::MsiProcessMessage(hInstall, INSTALLMESSAGE_PROGRESS, hRecordProg) == IDCANCEL) { uiResult = ERROR_INSTALL_USEREXIT; break; }
|
||||
}
|
||||
::MsiViewClose(hViewST);
|
||||
|
||||
if (uiResult == NO_ERROR) {
|
||||
// Save the sequences.
|
||||
uiResult = MSICA::SaveSequence(hInstall, _T("InstallScheduledTasks"), _T("CommitScheduledTasks"), _T("RollbackScheduledTasks"), olExecute);
|
||||
} else if (uiResult != ERROR_INSTALL_USEREXIT) {
|
||||
::MsiRecordSetInteger(hRecordProg, 1, ERROR_INSTALL_OPLIST_CREATE);
|
||||
::MsiRecordSetInteger(hRecordProg, 2, uiResult );
|
||||
::MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||
}
|
||||
} else {
|
||||
::MsiRecordSetInteger(hRecordProg, 1, uiResult);
|
||||
::MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||
}
|
||||
} else {
|
||||
::MsiRecordSetInteger(hRecordProg, 1, uiResult);
|
||||
::MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
uiResult = ERROR_INSTALL_DATABASE_OPEN;
|
||||
::MsiRecordSetInteger(hRecordProg, 1, uiResult);
|
||||
::MsiProcessMessage(hInstall, INSTALLMESSAGE_ERROR, hRecordProg);
|
||||
}
|
||||
|
||||
olExecute.Free();
|
||||
if (bIsCoInitialized) ::CoUninitialize();
|
||||
return uiResult;
|
||||
}
|
||||
|
||||
|
||||
UINT MSICATS_API ExecuteSequence(MSIHANDLE hInstall)
|
||||
{
|
||||
return MSICA::ExecuteSequence(hInstall);
|
||||
}
|
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
#include "stdafx.h"
|
Loading…
x
Reference in New Issue
Block a user