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:
Simon Rozman 2014-03-20 12:45:03 +00:00
parent b4750608b3
commit 5aabd7a036
28 changed files with 261 additions and 812 deletions

36
.gitattributes vendored
View File

@ -1,17 +1,17 @@
* text=auto !eol * text=auto !eol
/MSICA.sln svneol=CRLF#text/plain eol=crlf /MSICA.sln svneol=CRLF#text/plain eol=crlf
MSICACert/L10N/sl_SI.po -text MSICA/L10N/sl_SI.po -text
MSICACert/MSIBuild/Makefile -text MSICA/MSIBuild/Makefile -text
MSICACert/MSIBuild/build_all.bat -text MSICA/MSIBuild/build_all.bat -text
MSICACert/MSIBuild/clean_all.bat -text MSICA/MSIBuild/clean_all.bat -text
MSICACert/MSICACert.cpp -text MSICA/MSICA.cpp -text
MSICACert/MSICACert.h -text MSICA/MSICA.h -text
MSICACert/MSICACert.vcxproj -text svneol=unset#text/xml MSICA/MSICA.vcxproj -text svneol=unset#text/xml
MSICACert/MSICACert.vcxproj.filters -text svneol=unset#text/xml MSICA/MSICA.vcxproj.filters -text svneol=unset#text/xml
MSICACert/res/MSICACert.rc -text svneol=unset#unset MSICA/res/MSICA.rc -text svneol=unset#unset
MSICACert/res/MSICACert.rcx -text svneol=unset#unset MSICA/res/MSICA.rcx -text svneol=unset#unset
MSICACert/stdafx.cpp -text MSICA/stdafx.cpp -text
MSICACert/stdafx.h -text MSICA/stdafx.h -text
MSICALib/L10N/sl_SI.po -text MSICALib/L10N/sl_SI.po -text
MSICALib/MSIBuild/Makefile -text MSICALib/MSIBuild/Makefile -text
MSICALib/MSIBuild/build_all.bat -text MSICALib/MSIBuild/build_all.bat -text
@ -27,18 +27,6 @@ MSICALib/OpSvc.cpp -text
MSICALib/OpTS.cpp -text MSICALib/OpTS.cpp -text
MSICALib/stdafx.cpp -text MSICALib/stdafx.cpp -text
MSICALib/stdafx.h -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/Debug.props -text svneol=unset#text/xml
include/Release.props -text svneol=unset#text/xml include/Release.props -text svneol=unset#text/xml
include/Win32.props -text svneol=unset#text/xml include/Win32.props -text svneol=unset#text/xml

36
.gitignore vendored
View File

@ -1,18 +1,18 @@
/*.opensdf /*.opensdf
/*.sdf /*.sdf
/*.suo /*.suo
MSICACert/*.user MSICA/*.user
MSICACert/L10N/*.mo MSICA/L10N/*.mo
MSICACert/MSIBuild/*-1.idt MSICA/MSIBuild/*-1.idt
MSICACert/MSIBuild/*-2.idt MSICA/MSIBuild/*-2.idt
MSICACert/MSIBuild/*-2.idtx MSICA/MSIBuild/*-2.idtx
MSICACert/MSIBuild/*.Binary-1 MSICA/MSIBuild/*.Binary-1
MSICACert/MSIBuild/*.Binary-2 MSICA/MSIBuild/*.Binary-2
MSICACert/MSIBuild/*.Icon-1 MSICA/MSIBuild/*.Icon-1
MSICACert/MSIBuild/*.Icon-2 MSICA/MSIBuild/*.Icon-2
MSICACert/MSIBuild/*.lst MSICA/MSIBuild/*.lst
MSICACert/MSIBuild/*.msm MSICA/MSIBuild/*.msm
MSICACert/temp MSICA/temp
MSICALib/*.user MSICALib/*.user
MSICALib/L10N/*.mo MSICALib/L10N/*.mo
MSICALib/MSIBuild/*-1.idt MSICALib/MSIBuild/*-1.idt
@ -25,17 +25,5 @@ MSICALib/MSIBuild/*.Icon-2
MSICALib/MSIBuild/*.lst MSICALib/MSIBuild/*.lst
MSICALib/MSIBuild/*.msm MSICALib/MSIBuild/*.msm
MSICALib/temp 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 /ipch
/output /output

View File

@ -3,15 +3,13 @@ Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010 # Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MSICALib", "MSICALib\MSICALib.vcxproj", "{8552EE55-177E-4F51-B51B-BAF7D6462CDE}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MSICALib", "MSICALib\MSICALib.vcxproj", "{8552EE55-177E-4F51-B51B-BAF7D6462CDE}"
EndProject 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 EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F3D5C008-7728-49CA-84F1-12C186FC87F8}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F3D5C008-7728-49CA-84F1-12C186FC87F8}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
include\version.h = include\version.h include\version.h = include\version.h
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MSICACert", "MSICACert\MSICACert.vcxproj", "{0379563D-9835-44AC-928E-24D4E316CE5D}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32 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|Win32.Build.0 = Release|Win32
{A7D9EBC1-1E64-4399-9C88-6692F8742153}.Release|x64.ActiveCfg = Release|x64 {A7D9EBC1-1E64-4399-9C88-6692F8742153}.Release|x64.ActiveCfg = Release|x64
{A7D9EBC1-1E64-4399-9C88-6692F8742153}.Release|x64.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -1,8 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: MSICATS\n" "Project-Id-Version: MSICA\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: \n"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n" "Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
"Language-Team: Amebis, d. o. o., Kamnik <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) # 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. # 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). # For example: Use LANG_PORTUGUESE + SUBLANG_DEFAULT = 0x416, although 0x416 represents Brasil Portugese (too).
#: res/MSICATS.rcx:42 #: res/MSICA.rcx:42
msgid "040904e4" msgid "040904e4"
msgstr "042404e2" msgstr "042404e2"
# Language Code (hexadecimal) # 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. # 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). # For example: Use LANG_PORTUGUESE + SUBLANG_DEFAULT = 0x416, although 0x416 represents Brasil Portugese (too).
#: res/MSICATS.rcx:60 #: res/MSICA.rcx:60
msgid "0x409" msgid "0x409"
msgstr "0x424" msgstr "0x424"
# Windows charset for this language (decimal) # 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.Win32.Release.ActionText-2.idtx:3
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:3 #: MSIBuild/En.x64.Debug.ActionText-2.idtx:3
#: MSIBuild/En.x64.Release.ActionText-2.idtx:3 #: MSIBuild/En.x64.Release.ActionText-2.idtx:3
@ -40,37 +40,33 @@ msgid "1252"
msgstr "1250" msgstr "1250"
# The name of the constant in RC to include the resources in this language. # 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" msgid "AFX_TARG_ENU"
msgstr "AFX_TARG_SLV" msgstr "AFX_TARG_SLV"
#: res/MSICATS.rcx:44 #: res/MSICA.rcx:44
msgid "Amebis, d. o. o., Kamnik" msgid "Amebis, d. o. o., Kamnik"
msgstr "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" msgid "Copyright © Amebis, d. o. o., Kamnik, 2012"
msgstr "Vse pravice pridržane © 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) # 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" msgid "LANG_ENGLISH"
msgstr "LANG_SLOVENIAN" msgstr "LANG_SLOVENIAN"
#: res/MSICATS.rcx:49 #: res/MSICA.rcx:47 res/MSICA.rcx:49
msgid "MSICA" msgid "MSICA"
msgstr "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) # 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" msgid "SUBLANG_DEFAULT"
msgstr "SUBLANG_DEFAULT" msgstr "SUBLANG_DEFAULT"
@ -78,12 +74,32 @@ msgstr "SUBLANG_DEFAULT"
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:4 #: MSIBuild/En.Win32.Release.ActionText-2.idtx:4
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:4 #: MSIBuild/En.x64.Debug.ActionText-2.idtx:4
#: MSIBuild/En.x64.Release.ActionText-2.idtx:4 #: MSIBuild/En.x64.Release.ActionText-2.idtx:4
msgid "Registering scheduled tasks" msgid "Certificate: [1]"
msgstr "Registracija razporejenih opravil" msgstr "Digitalno potrdilo: [1]"
#: MSIBuild/En.Win32.Debug.ActionText-2.idtx:4 #: MSIBuild/En.Win32.Debug.ActionText-2.idtx:4
#: MSIBuild/En.Win32.Release.ActionText-2.idtx:4 #: MSIBuild/En.Win32.Release.ActionText-2.idtx:4
#: MSIBuild/En.x64.Debug.ActionText-2.idtx:4 #: MSIBuild/En.x64.Debug.ActionText-2.idtx:4
#: MSIBuild/En.x64.Release.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]" msgid "Scheduled task: [1]"
msgstr "Razporejeno opravilo: [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"

View File

@ -14,6 +14,13 @@ All :: "$(LANG).$(PLAT).$(CFG)._Validation-1.idt"
Table Column Nullable MinValue MaxValue KeyTable KeyColumn Category Set Description Table Column Nullable MinValue MaxValue KeyTable KeyColumn Category Set Description
s32 s32 s4 I4 I4 S255 I2 S32 S255 S255 s32 s32 s4 I4 I4 S255 I2 S32 S255 S255
_Validation Table Column _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 Task N Identifier Primary key, non-localized token.
ScheduledTask DisplayName N Formatted Task name. ScheduledTask DisplayName N Formatted Task name.
ScheduledTask Application N Formatted Task application name. ScheduledTask Application N Formatted Task application name.
@ -60,6 +67,7 @@ All :: "$(LANG).$(PLAT).$(CFG).ActionText-2.idt"
Action Description Template Action Description Template
s$(MSIBUILD_LENGTH_ID) L0 L0 s$(MSIBUILD_LENGTH_ID) L0 L0
1252 ActionText Action 1252 ActionText Action
InstallCertificates Installing certificates Certificate: [1]
InstallScheduledTasks Registering scheduled tasks Scheduled task: [1] InstallScheduledTasks Registering scheduled tasks Scheduled task: [1]
<<NOKEEP <<NOKEEP
@ -81,7 +89,7 @@ InstallScheduledTasks Registering scheduled tasks Scheduled task: [1]
All :: \ All :: \
"$(LANG).$(PLAT).$(CFG).Binary-1.idt" \ "$(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" "$(LANG).$(PLAT).$(CFG).Binary-1.idt" : "Makefile" "..\..\..\include\MSIBuildCfg.mak" "$(LANG).$(PLAT).$(CFG).Binary-1"
-if exist $@ del /f /q $@ -if exist $@ del /f /q $@
@ -89,13 +97,27 @@ All :: \
Name Data Name Data
s$(MSIBUILD_LENGTH_ID) v0 s$(MSIBUILD_LENGTH_ID) v0
Binary Name Binary Name
binMSICATS.dll MSICATS.dll binMSICA.dll MSICA.dll
<<NOKEEP <<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 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 # CustomAction
@ -107,10 +129,14 @@ All :: "$(LANG).$(PLAT).$(CFG).CustomAction-1.idt"
Action Type Source Target Action Type Source Target
s$(MSIBUILD_LENGTH_ID) i2 S$(MSIBUILD_LENGTH_ID) S255 s$(MSIBUILD_LENGTH_ID) i2 S$(MSIBUILD_LENGTH_ID) S255
CustomAction Action CustomAction Action
EvaluateScheduledTasks 1 binMSICATS.dll EvaluateSequence EvaluateCertificates 1 binMSICACert.dll EvaluateCertificates
InstallScheduledTasks 3073 binMSICATS.dll ExecuteSequence InstallCertificates 3073 binMSICACert.dll ExecuteSequence
RollbackScheduledTasks 3329 binMSICATS.dll ExecuteSequence RollbackCertificates 3329 binMSICACert.dll ExecuteSequence
CommitScheduledTasks 3585 binMSICATS.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 <<NOKEEP
@ -125,6 +151,10 @@ All :: "$(LANG).$(PLAT).$(CFG).InstallExecuteSequence-1.idt"
Action Condition Sequence Action Condition Sequence
s$(MSIBUILD_LENGTH_ID) S255 I2 s$(MSIBUILD_LENGTH_ID) S255 I2
InstallExecuteSequence Action InstallExecuteSequence Action
EvaluateCertificates 6577
RollbackCertificates 6576
InstallCertificates 6578
CommitCertificates 6579
EvaluateScheduledTasks 6580 EvaluateScheduledTasks 6580
RollbackScheduledTasks 6581 RollbackScheduledTasks 6581
InstallScheduledTasks 6582 InstallScheduledTasks 6582

View File

@ -5,7 +5,8 @@
// Local constants // 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 // Exported functions
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
UINT MSICACERT_API EvaluateSequence(MSIHANDLE hInstall) UINT MSICA_API EvaluateCertificates(MSIHANDLE hInstall)
{ {
//::MessageBox(NULL, _T(__FUNCTION__), _T("MSICACert"), MB_OK); //::MessageBox(NULL, _T(__FUNCTION__), _T("MSICACert"), MB_OK);
@ -134,15 +135,15 @@ UINT MSICACERT_API EvaluateSequence(MSIHANDLE hInstall)
if (iAction >= INSTALLSTATE_LOCAL) { if (iAction >= INSTALLSTATE_LOCAL) {
// Component is or should be installed. Install the certificate. // 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) { } else if (iAction >= INSTALLSTATE_REMOVED) {
// Component is installed, but should be degraded to advertised/removed. Delete the certificate. // 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. // The amount of tick space to add for each certificate to progress indicator.
::MsiRecordSetInteger(hRecordProg, 1, 3 ); ::MsiRecordSetInteger(hRecordProg, 1, 3 );
::MsiRecordSetInteger(hRecordProg, 2, MSICACERT_CERT_TICK_SIZE); ::MsiRecordSetInteger(hRecordProg, 2, MSICA_CERT_TICK_SIZE);
if (::MsiProcessMessage(hInstall, INSTALLMESSAGE_PROGRESS, hRecordProg) == IDCANCEL) { uiResult = ERROR_INSTALL_USEREXIT; break; } if (::MsiProcessMessage(hInstall, INSTALLMESSAGE_PROGRESS, hRecordProg) == IDCANCEL) { uiResult = ERROR_INSTALL_USEREXIT; break; }
} }
::MsiViewClose(hViewCert); ::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); return MSICA::ExecuteSequence(hInstall);
} }

View File

@ -1,5 +1,5 @@
#ifndef __MSICATS_H__ #ifndef __MSICA_H__
#define __MSICATS_H__ #define __MSICA_H__
#include <msi.h> #include <msi.h>
@ -8,12 +8,12 @@
// Calling declaration // Calling declaration
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
#if defined(MSICATS_DLL) #if defined(MSICA_DLL)
#define MSICATS_API __declspec(dllexport) #define MSICA_API __declspec(dllexport)
#elif defined(MSICATS_DLLIMP) #elif defined(MSICA_DLLIMP)
#define MSICATS_API __declspec(dllimport) #define MSICA_API __declspec(dllimport)
#else #else
#define MSICATS_API #define MSICA_API
#endif #endif
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -24,11 +24,12 @@
extern "C" { extern "C" {
#endif #endif
UINT MSICATS_API EvaluateSequence(MSIHANDLE hInstall); UINT MSICA_API EvaluateCertificates(MSIHANDLE hInstall);
UINT MSICATS_API ExecuteSequence(MSIHANDLE hInstall); UINT MSICA_API EvaluateScheduledTasks(MSIHANDLE hInstall);
UINT MSICA_API ExecuteSequence(MSIHANDLE hInstall);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // __MSICATS_H__ #endif // __MSICA_H__

View File

@ -138,7 +138,7 @@
<ClCompile /> <ClCompile />
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="MSICATS.cpp" /> <ClCompile Include="MSICA.cpp" />
<ClCompile Include="stdafx.cpp"> <ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
@ -147,14 +147,14 @@
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="MSICATS.h" /> <ClInclude Include="MSICA.h" />
<ClInclude Include="stdafx.h" /> <ClInclude Include="stdafx.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="res\MSICATS.rc" /> <ResourceCompile Include="res\MSICA.rc" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceLocalizator Include="res\MSICATS.rcx" /> <ResourceLocalizator Include="res\MSICA.rcx" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="L10N\sl_SI.po" /> <None Include="L10N\sl_SI.po" />

View File

@ -15,7 +15,7 @@
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="MSICATS.cpp"> <ClCompile Include="MSICA.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="stdafx.cpp"> <ClCompile Include="stdafx.cpp">
@ -23,7 +23,7 @@
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="MSICATS.h"> <ClInclude Include="MSICA.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="stdafx.h"> <ClInclude Include="stdafx.h">
@ -31,12 +31,12 @@
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="res\MSICATS.rc"> <ResourceCompile Include="res\MSICA.rc">
<Filter>Resource Files</Filter> <Filter>Resource Files</Filter>
</ResourceCompile> </ResourceCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceLocalizator Include="res\MSICATS.rcx"> <ResourceLocalizator Include="res\MSICA.rcx">
<Filter>Resource Files</Filter> <Filter>Resource Files</Filter>
</ResourceLocalizator> </ResourceLocalizator>
</ItemGroup> </ItemGroup>

BIN
MSICA/res/MSICA.rc Normal file

Binary file not shown.

View File

@ -20,7 +20,7 @@
#define _WIN32_WINNT 0x0501 // Include Windows XP symbols #define _WIN32_WINNT 0x0501 // Include Windows XP symbols
#define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h #define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h
#ifdef _WINDLL #ifdef _WINDLL
#define MSICATS_DLL // This is a DLL #define MSICA_DLL // This is a DLL
#endif #endif
#define _ATL_APARTMENT_THREADED #define _ATL_APARTMENT_THREADED
@ -34,4 +34,4 @@
#include "..\MSICALib\MSICALib.h" #include "..\MSICALib\MSICALib.h"
#include "MSICATS.h" #include "MSICA.h"

View File

@ -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"

View File

@ -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"

View File

@ -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__

View File

@ -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>

View File

@ -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.

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -1 +0,0 @@
#include "stdafx.h"