diff --git a/.gitattributes b/.gitattributes
index 6c7c1a3..3c5007f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -13,23 +13,6 @@ 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
-MSICALib/MSIBuild/clean_all.bat -text
-MSICALib/MSICALib.cpp -text
-MSICALib/MSICALib.h -text
-MSICALib/MSICALib.vcxproj -text svneol=unset#text/xml
-MSICALib/MSICALib.vcxproj.filters -text svneol=unset#text/xml
-MSICALib/OpCert.cpp -text
-MSICALib/OpFile.cpp -text
-MSICALib/OpReg.cpp -text
-MSICALib/OpSvc.cpp -text
-MSICALib/OpTS.cpp -text
-MSICALib/OpWLAN.cpp -text
-MSICALib/stdafx.cpp -text
-MSICALib/stdafx.h -text
-/TODO.rtf -text svneol=unset#text/rtf
include/Debug.props -text svneol=unset#text/xml
include/Release.props -text svneol=unset#text/xml
include/Win32.props -text svneol=unset#text/xml
diff --git a/.gitignore b/.gitignore
index 47615a4..cbacd43 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,17 +1,17 @@
/*.opensdf
/*.sdf
/*.suo
-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
+build/*.user
+build/temp
+L10N/*.mo
+MSIBuild/*-1.idt
+MSIBuild/*-2.idt
+MSIBuild/*-2.idtx
+MSIBuild/*.Binary-1
+MSIBuild/*.Binary-2
+MSIBuild/*.Icon-1
+MSIBuild/*.Icon-2
+MSIBuild/*.lst
+MSIBuild/*.msm
/ipch
/output
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 27bdb42..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,6 +0,0 @@
-[submodule "lib/atlex"]
- path = lib/atlex
- url = https://github.com/Amebis/atlex.git
-[submodule "lib/MSICALib"]
- path = lib/MSICALib
- url = https://github.com/Amebis/MSICALib.git
diff --git a/MSICA/L10N/sl_SI.po b/L10N/sl_SI.po
similarity index 100%
rename from MSICA/L10N/sl_SI.po
rename to L10N/sl_SI.po
diff --git a/MSICA/MSIBuild/Makefile b/MSIBuild/Makefile
similarity index 94%
rename from MSICA/MSIBuild/Makefile
rename to MSIBuild/Makefile
index 251b71e..a729ac9 100644
--- a/MSICA/MSIBuild/Makefile
+++ b/MSIBuild/Makefile
@@ -1,302 +1,302 @@
-#
-# Copyright 1991-2015 Amebis
-#
-# This file is part of MSICA.
-#
-# MSICA is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# MSICA is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with MSICA. If not, see .
-#
-
-!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.
-ScheduledTask Task N Identifier Primary key, non-localized token.
-ScheduledTask DisplayName N Formatted Task name.
-ScheduledTask Application N Formatted Task application name.
-ScheduledTask Parameters Y Formatted Task command line parameters.
-ScheduledTask Directory_ N Directory 1 Identifier Task working directory.
-ScheduledTask Flags N DoubleInteger Task's flags to pass in IScheduledWorkItem::SetFlags() call.
-ScheduledTask Priority N DoubleInteger 32;64;128;256;16384;32768 Task's priority to pass in ITask::SetPriority() call.
-ScheduledTask User Y Formatted Account name to run task as. Use empty string for system account.
-ScheduledTask Password Y Formatted Account password to run task as. Use NULL for system account.
-ScheduledTask Author Y Formatted Task author.
-ScheduledTask Description Y Formatted Task description.
-ScheduledTask IdleMin Y Integer A value that specifies how long, in minutes, the system must remain idle before the work item can run.
-ScheduledTask IdleDeadline Y Integer A value that specifies the maximum number of minutes that the Task Scheduler will wait for the idle-time period.
-ScheduledTask MaxRuntime N DoubleInteger Specifies the maximum run time (in milliseconds), for the task. This parameter may be set to -1 to specify an unlimited time.
-ScheduledTask Condition Y Condition Optional expression which skips the task if evaluates to expFalse. If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.
-ScheduledTask Component_ N Component 1 Identifier Component the task is part of.
-ServiceConfigure ServiceConfigure N Identifier Primary key, non-localized token.
-ServiceConfigure Name N Formatted Name of a service. /, \, comma and space are invalid
-ServiceConfigure StartType N DoubleInteger -1;0;1;2;3;4 Start type: -1=don't change, 0=boot, 1=system, 2=auto, 3=demand, 4=disabled
-ServiceConfigure Control N Integer 0;2;3;4;5;7 Bitwise combination of: 0=no action, 1=wait to finish, 2=start, 4=stop
-ServiceConfigure Condition Y Condition Optional expression which skips the service configuration if evaluates to expFalse. If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.
-ServiceConfigure Sequence Y Number that determines the sort order in which the configurations are to be executed.
-TaskTrigger Trigger N Identifier Primary key, non-localized token.
-TaskTrigger BeginDate N DoubleInteger Date that the task trigger activates (counted in days from January 1st, 1980). The beginning date must be specified when setting a task.
-TaskTrigger EndDate Y DoubleInteger Date that the task trigger deactivates (counted in days from January 1st, 1980).
-TaskTrigger StartTime N DoubleInteger Time of the day the task runs (counted in minutes since midnight).
-TaskTrigger StartTimeRand Y Integer Maximum random number of minutes to add to start time.
-TaskTrigger MinutesDuration Y DoubleInteger Number of minutes after the task starts that the trigger will remain active. The number of minutes specified here must be greater than or equal to the MinutesInterval column.
-TaskTrigger MinutesInterval Y DoubleInteger Number of minutes between consecutive task executions. This number is counted from the start of the previous scheduled task. The number of minutes specified here must be less than the MinutesDuration column.
-TaskTrigger Flags N DoubleInteger Value that describes the behavior of the trigger. This value is a combination of the flags in TASK_TRIGGER::rgFlags.
-TaskTrigger Type N 0 7 Integer A TASK_TRIGGER_TYPE enumerated value that specifies the type of trigger. This member is used with Type. The type of trigger specified here determines which fields of the TRIGGER_TYPE_UNION specified in Type member will be used. Trigger type is based on when the trigger will run the task.
-TaskTrigger DaysInterval Y Integer Specifies the number of days between task runs.
-TaskTrigger WeeksInterval Y Integer Number of weeks between invocations of a task.
-TaskTrigger DaysOfTheWeek Y 0 127 Integer Value that describes the days of the week the task runs. This value is a bitfield and is a combination of the following values: 1=Sun, 2=Mon, 4=Tue, 8=Wed, 16=Thu, 32=Fri, 64=Sat.
-TaskTrigger DaysOfMonth Y DoubleInteger Specifies the day of the month a task runs. This value is a bitfield that specifies the day(s) the task will run. Bit 0 corresponds to the first of the month, bit 1 to the second, and so forth.
-TaskTrigger WeekOfMonth Y Integer 1;2;3;4;5 Specifies the week of the month when the task runs. This value is exclusive and is one of the following: 1=The task will run between the first and seventh day of the month, 2=The task will run between the eighth and 14th day of the month, 3=The task will run between the 15th and 21st day of the month, 4=The task will run between the 22nd and 28th of the month, 5=The task will run between the last seven days of the month.
-TaskTrigger MonthsOfYear Y 0 4095 Integer Specifies the month(s) when the task runs. This value is a combination of the following values: 1=Jan, 2=Feb, 4=Mar, 8=Apr, 16=May, 32=Jun, 64=Jul, 128=Aug, 256=Sep, 512=Oct, 1024=Nov, 2048=Dec.
-TaskTrigger Task_ N ScheduledTask 1 Identifier Key of the Trigger's task.
-WLANProfile WLANProfile N Identifier Primary key, non-localized token.
-WLANProfile Name N Formatted Profile name
-WLANProfile Binary_ N Binary 1 Identifier The profile XML file. The binary information is looked up from the Binary Table.
-WLANProfile Condition Y Condition Optional expression which skips the profile if evaluates to expFalse. If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.
-WLANProfile Component_ N Component 1 Identifier Component the profile is part of.
-< NUL
-Action Description Template
-s$(MSIBUILD_LENGTH_ID) L0 L0
-1252 ActionText Action
-RemoveScheduledTasksExec Removing scheduled tasks Scheduled task: [1]
-StopServicesExec Stopping services Service: [1]
-RemoveWLANProfilesExec Removing WLAN profiles WLAN profile: [1]
-RemoveCertificatesExec Removing certificates Certificate: [1]
-InstallCertificatesExec Installing certificates Certificate: [1]
-InstallWLANProfilesExec Installing WLAN profiles WLAN profile: [1]
-SetServiceStartExec Configuring services Service: [1]
-StartServicesExec Starting services Service: [1]
-InstallScheduledTasksExec Installing scheduled tasks Scheduled task: [1]
-< 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\MSICA.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
-binMSICA.dll MSICA.dll
-< 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
-#< NUL
-Action Type Source Target
-s$(MSIBUILD_LENGTH_ID) i2 S$(MSIBUILD_LENGTH_ID) S255
-CustomAction Action
-MSICAInitialize 1 binMSICA.dll MSICAInitialize
-RemoveScheduledTasksRollback 3329 binMSICA.dll ExecuteSequence
-RemoveScheduledTasksExec 3073 binMSICA.dll ExecuteSequence
-RemoveScheduledTasksCommit 3585 binMSICA.dll ExecuteSequence
-StopServicesRollback 3329 binMSICA.dll ExecuteSequence
-StopServicesExec 3073 binMSICA.dll ExecuteSequence
-StopServicesCommit 3585 binMSICA.dll ExecuteSequence
-RemoveWLANProfilesRollback 3329 binMSICA.dll ExecuteSequence
-RemoveWLANProfilesExec 3073 binMSICA.dll ExecuteSequence
-RemoveWLANProfilesCommit 3585 binMSICA.dll ExecuteSequence
-RemoveCertificatesRollback 3329 binMSICA.dll ExecuteSequence
-RemoveCertificatesExec 3073 binMSICA.dll ExecuteSequence
-RemoveCertificatesCommit 3585 binMSICA.dll ExecuteSequence
-InstallCertificatesRollback 3329 binMSICA.dll ExecuteSequence
-InstallCertificatesExec 3073 binMSICA.dll ExecuteSequence
-InstallCertificatesCommit 3585 binMSICA.dll ExecuteSequence
-InstallWLANProfilesRollback 3329 binMSICA.dll ExecuteSequence
-InstallWLANProfilesExec 3073 binMSICA.dll ExecuteSequence
-InstallWLANProfilesCommit 3585 binMSICA.dll ExecuteSequence
-SetServiceStartRollback 3329 binMSICA.dll ExecuteSequence
-SetServiceStartExec 3073 binMSICA.dll ExecuteSequence
-SetServiceStartCommit 3585 binMSICA.dll ExecuteSequence
-StartServicesRollback 3329 binMSICA.dll ExecuteSequence
-StartServicesExec 3073 binMSICA.dll ExecuteSequence
-StartServicesCommit 3585 binMSICA.dll ExecuteSequence
-InstallScheduledTasksRollback 3329 binMSICA.dll ExecuteSequence
-InstallScheduledTasksExec 3073 binMSICA.dll ExecuteSequence
-InstallScheduledTasksCommit 3585 binMSICA.dll ExecuteSequence
-< NUL
-Action Condition Sequence
-s$(MSIBUILD_LENGTH_ID) S255 I2
-InstallExecuteSequence Action
-MSICAInitialize 1510
-RemoveScheduledTasksRollback 1850
-RemoveScheduledTasksExec 1851
-RemoveScheduledTasksCommit 1852
-StopServicesRollback 1853
-StopServicesExec 1854
-StopServicesCommit 1855
-RemoveWLANProfilesRollback 1856
-RemoveWLANProfilesExec 1857
-RemoveWLANProfilesCommit 1858
-RemoveCertificatesRollback 1859
-RemoveCertificatesExec 1860
-RemoveCertificatesCommit 1861
-InstallCertificatesRollback 6150
-InstallCertificatesExec 6151
-InstallCertificatesCommit 6152
-InstallWLANProfilesRollback 6153
-InstallWLANProfilesExec 6154
-InstallWLANProfilesCommit 6155
-SetServiceStartRollback 6156
-SetServiceStartExec 6157
-SetServiceStartCommit 6158
-StartServicesRollback 6159
-StartServicesExec 6160
-StartServicesCommit 6161
-InstallScheduledTasksRollback 6162
-InstallScheduledTasksExec 6163
-InstallScheduledTasksCommit 6164
-< NUL
-#Task DisplayName Application Parameters Directory_ Flags Priority User Password Author Description IdleMin IdleDeadline MaxRuntime Condition Component_
-#s$(MSIBUILD_LENGTH_ID) l255 s255 S255 s$(MSIBUILD_LENGTH_ID) i4 i4 S255 S255 L255 L0 I2 I2 i4 S255 s$(MSIBUILD_LENGTH_ID)
-#ScheduledTask Task
-#< NUL
-#ServiceConfigure Name StartType Control Condition Sequence
-#s$(MSIBUILD_LENGTH_ID) l255 i4 i2 S255 I2
-#ServiceConfigure ServiceConfigure
-#< NUL
-#Trigger BeginDate EndDate StartTime StartTimeRand MinutesDuration MinutesInterval Flags Type DaysInterval WeeksInterval DaysOfTheWeek DaysOfMonth WeekOfMonth MonthsOfYear Task_
-#s$(MSIBUILD_LENGTH_ID) i2 I2 i2 I2 I4 I4 i4 i2 I2 I2 I2 I4 I2 I2 s$(MSIBUILD_LENGTH_ID)
-#TaskTrigger Trigger
-#< NUL
-#WLANProfile Name Binary_ Condition Component_
-#s$(MSIBUILD_LENGTH_ID) l255 s$(MSIBUILD_LENGTH_ID) S255 s$(MSIBUILD_LENGTH_ID)
-#WLANProfile WLANProfile
-#<.
+#
+
+!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.
+ScheduledTask Task N Identifier Primary key, non-localized token.
+ScheduledTask DisplayName N Formatted Task name.
+ScheduledTask Application N Formatted Task application name.
+ScheduledTask Parameters Y Formatted Task command line parameters.
+ScheduledTask Directory_ N Directory 1 Identifier Task working directory.
+ScheduledTask Flags N DoubleInteger Task's flags to pass in IScheduledWorkItem::SetFlags() call.
+ScheduledTask Priority N DoubleInteger 32;64;128;256;16384;32768 Task's priority to pass in ITask::SetPriority() call.
+ScheduledTask User Y Formatted Account name to run task as. Use empty string for system account.
+ScheduledTask Password Y Formatted Account password to run task as. Use NULL for system account.
+ScheduledTask Author Y Formatted Task author.
+ScheduledTask Description Y Formatted Task description.
+ScheduledTask IdleMin Y Integer A value that specifies how long, in minutes, the system must remain idle before the work item can run.
+ScheduledTask IdleDeadline Y Integer A value that specifies the maximum number of minutes that the Task Scheduler will wait for the idle-time period.
+ScheduledTask MaxRuntime N DoubleInteger Specifies the maximum run time (in milliseconds), for the task. This parameter may be set to -1 to specify an unlimited time.
+ScheduledTask Condition Y Condition Optional expression which skips the task if evaluates to expFalse. If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.
+ScheduledTask Component_ N Component 1 Identifier Component the task is part of.
+ServiceConfigure ServiceConfigure N Identifier Primary key, non-localized token.
+ServiceConfigure Name N Formatted Name of a service. /, \, comma and space are invalid
+ServiceConfigure StartType N DoubleInteger -1;0;1;2;3;4 Start type: -1=don't change, 0=boot, 1=system, 2=auto, 3=demand, 4=disabled
+ServiceConfigure Control N Integer 0;2;3;4;5;7 Bitwise combination of: 0=no action, 1=wait to finish, 2=start, 4=stop
+ServiceConfigure Condition Y Condition Optional expression which skips the service configuration if evaluates to expFalse. If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.
+ServiceConfigure Sequence Y Number that determines the sort order in which the configurations are to be executed.
+TaskTrigger Trigger N Identifier Primary key, non-localized token.
+TaskTrigger BeginDate N DoubleInteger Date that the task trigger activates (counted in days from January 1st, 1980). The beginning date must be specified when setting a task.
+TaskTrigger EndDate Y DoubleInteger Date that the task trigger deactivates (counted in days from January 1st, 1980).
+TaskTrigger StartTime N DoubleInteger Time of the day the task runs (counted in minutes since midnight).
+TaskTrigger StartTimeRand Y Integer Maximum random number of minutes to add to start time.
+TaskTrigger MinutesDuration Y DoubleInteger Number of minutes after the task starts that the trigger will remain active. The number of minutes specified here must be greater than or equal to the MinutesInterval column.
+TaskTrigger MinutesInterval Y DoubleInteger Number of minutes between consecutive task executions. This number is counted from the start of the previous scheduled task. The number of minutes specified here must be less than the MinutesDuration column.
+TaskTrigger Flags N DoubleInteger Value that describes the behavior of the trigger. This value is a combination of the flags in TASK_TRIGGER::rgFlags.
+TaskTrigger Type N 0 7 Integer A TASK_TRIGGER_TYPE enumerated value that specifies the type of trigger. This member is used with Type. The type of trigger specified here determines which fields of the TRIGGER_TYPE_UNION specified in Type member will be used. Trigger type is based on when the trigger will run the task.
+TaskTrigger DaysInterval Y Integer Specifies the number of days between task runs.
+TaskTrigger WeeksInterval Y Integer Number of weeks between invocations of a task.
+TaskTrigger DaysOfTheWeek Y 0 127 Integer Value that describes the days of the week the task runs. This value is a bitfield and is a combination of the following values: 1=Sun, 2=Mon, 4=Tue, 8=Wed, 16=Thu, 32=Fri, 64=Sat.
+TaskTrigger DaysOfMonth Y DoubleInteger Specifies the day of the month a task runs. This value is a bitfield that specifies the day(s) the task will run. Bit 0 corresponds to the first of the month, bit 1 to the second, and so forth.
+TaskTrigger WeekOfMonth Y Integer 1;2;3;4;5 Specifies the week of the month when the task runs. This value is exclusive and is one of the following: 1=The task will run between the first and seventh day of the month, 2=The task will run between the eighth and 14th day of the month, 3=The task will run between the 15th and 21st day of the month, 4=The task will run between the 22nd and 28th of the month, 5=The task will run between the last seven days of the month.
+TaskTrigger MonthsOfYear Y 0 4095 Integer Specifies the month(s) when the task runs. This value is a combination of the following values: 1=Jan, 2=Feb, 4=Mar, 8=Apr, 16=May, 32=Jun, 64=Jul, 128=Aug, 256=Sep, 512=Oct, 1024=Nov, 2048=Dec.
+TaskTrigger Task_ N ScheduledTask 1 Identifier Key of the Trigger's task.
+WLANProfile WLANProfile N Identifier Primary key, non-localized token.
+WLANProfile Name N Formatted Profile name
+WLANProfile Binary_ N Binary 1 Identifier The profile XML file. The binary information is looked up from the Binary Table.
+WLANProfile Condition Y Condition Optional expression which skips the profile if evaluates to expFalse. If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.
+WLANProfile Component_ N Component 1 Identifier Component the profile is part of.
+< NUL
+Action Description Template
+s$(MSIBUILD_LENGTH_ID) L0 L0
+1252 ActionText Action
+RemoveScheduledTasksExec Removing scheduled tasks Scheduled task: [1]
+StopServicesExec Stopping services Service: [1]
+RemoveWLANProfilesExec Removing WLAN profiles WLAN profile: [1]
+RemoveCertificatesExec Removing certificates Certificate: [1]
+InstallCertificatesExec Installing certificates Certificate: [1]
+InstallWLANProfilesExec Installing WLAN profiles WLAN profile: [1]
+SetServiceStartExec Configuring services Service: [1]
+StartServicesExec Starting services Service: [1]
+InstallScheduledTasksExec Installing scheduled tasks Scheduled task: [1]
+< 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\MSICA.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
+binMSICA.dll MSICA.dll
+< 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
+#< NUL
+Action Type Source Target
+s$(MSIBUILD_LENGTH_ID) i2 S$(MSIBUILD_LENGTH_ID) S255
+CustomAction Action
+MSICAInitialize 1 binMSICA.dll MSICAInitialize
+RemoveScheduledTasksRollback 3329 binMSICA.dll ExecuteSequence
+RemoveScheduledTasksExec 3073 binMSICA.dll ExecuteSequence
+RemoveScheduledTasksCommit 3585 binMSICA.dll ExecuteSequence
+StopServicesRollback 3329 binMSICA.dll ExecuteSequence
+StopServicesExec 3073 binMSICA.dll ExecuteSequence
+StopServicesCommit 3585 binMSICA.dll ExecuteSequence
+RemoveWLANProfilesRollback 3329 binMSICA.dll ExecuteSequence
+RemoveWLANProfilesExec 3073 binMSICA.dll ExecuteSequence
+RemoveWLANProfilesCommit 3585 binMSICA.dll ExecuteSequence
+RemoveCertificatesRollback 3329 binMSICA.dll ExecuteSequence
+RemoveCertificatesExec 3073 binMSICA.dll ExecuteSequence
+RemoveCertificatesCommit 3585 binMSICA.dll ExecuteSequence
+InstallCertificatesRollback 3329 binMSICA.dll ExecuteSequence
+InstallCertificatesExec 3073 binMSICA.dll ExecuteSequence
+InstallCertificatesCommit 3585 binMSICA.dll ExecuteSequence
+InstallWLANProfilesRollback 3329 binMSICA.dll ExecuteSequence
+InstallWLANProfilesExec 3073 binMSICA.dll ExecuteSequence
+InstallWLANProfilesCommit 3585 binMSICA.dll ExecuteSequence
+SetServiceStartRollback 3329 binMSICA.dll ExecuteSequence
+SetServiceStartExec 3073 binMSICA.dll ExecuteSequence
+SetServiceStartCommit 3585 binMSICA.dll ExecuteSequence
+StartServicesRollback 3329 binMSICA.dll ExecuteSequence
+StartServicesExec 3073 binMSICA.dll ExecuteSequence
+StartServicesCommit 3585 binMSICA.dll ExecuteSequence
+InstallScheduledTasksRollback 3329 binMSICA.dll ExecuteSequence
+InstallScheduledTasksExec 3073 binMSICA.dll ExecuteSequence
+InstallScheduledTasksCommit 3585 binMSICA.dll ExecuteSequence
+< NUL
+Action Condition Sequence
+s$(MSIBUILD_LENGTH_ID) S255 I2
+InstallExecuteSequence Action
+MSICAInitialize 1510
+RemoveScheduledTasksRollback 1850
+RemoveScheduledTasksExec 1851
+RemoveScheduledTasksCommit 1852
+StopServicesRollback 1853
+StopServicesExec 1854
+StopServicesCommit 1855
+RemoveWLANProfilesRollback 1856
+RemoveWLANProfilesExec 1857
+RemoveWLANProfilesCommit 1858
+RemoveCertificatesRollback 1859
+RemoveCertificatesExec 1860
+RemoveCertificatesCommit 1861
+InstallCertificatesRollback 6150
+InstallCertificatesExec 6151
+InstallCertificatesCommit 6152
+InstallWLANProfilesRollback 6153
+InstallWLANProfilesExec 6154
+InstallWLANProfilesCommit 6155
+SetServiceStartRollback 6156
+SetServiceStartExec 6157
+SetServiceStartCommit 6158
+StartServicesRollback 6159
+StartServicesExec 6160
+StartServicesCommit 6161
+InstallScheduledTasksRollback 6162
+InstallScheduledTasksExec 6163
+InstallScheduledTasksCommit 6164
+< NUL
+#Task DisplayName Application Parameters Directory_ Flags Priority User Password Author Description IdleMin IdleDeadline MaxRuntime Condition Component_
+#s$(MSIBUILD_LENGTH_ID) l255 s255 S255 s$(MSIBUILD_LENGTH_ID) i4 i4 S255 S255 L255 L0 I2 I2 i4 S255 s$(MSIBUILD_LENGTH_ID)
+#ScheduledTask Task
+#< NUL
+#ServiceConfigure Name StartType Control Condition Sequence
+#s$(MSIBUILD_LENGTH_ID) l255 i4 i2 S255 I2
+#ServiceConfigure ServiceConfigure
+#< NUL
+#Trigger BeginDate EndDate StartTime StartTimeRand MinutesDuration MinutesInterval Flags Type DaysInterval WeeksInterval DaysOfTheWeek DaysOfMonth WeekOfMonth MonthsOfYear Task_
+#s$(MSIBUILD_LENGTH_ID) i2 I2 i2 I2 I4 I4 i4 i2 I2 I2 I2 I4 I2 I2 s$(MSIBUILD_LENGTH_ID)
+#TaskTrigger Trigger
+#< NUL
+#WLANProfile Name Binary_ Condition Component_
+#s$(MSIBUILD_LENGTH_ID) l255 s$(MSIBUILD_LENGTH_ID) S255 s$(MSIBUILD_LENGTH_ID)
+#WLANProfile WLANProfile
+#<
-
-
-
-
- ..\output\$(Platform).$(Configuration)\
- true
-
-
-
- Windows
-
-
- L10N\sl_SI.po
-
-
- ..\lib\MSICALib\include;..\lib\atlex\include;%(AdditionalIncludeDirectories)
-
-
-
+
+
+
+
+
+ ..\output\$(Platform).$(Configuration)\
+ true
+
+
+
+ Windows
+
+
+ L10N\sl_SI.po
+
+
+ ..\include;..\..\..\lib\MSICALib\include;..\..\..\lib\atlex\include;%(AdditionalIncludeDirectories)
+
+
+ ..\include;%(AdditionalIncludeDirectories)
+
+
+
\ No newline at end of file
diff --git a/MSICA/MSICA.vcxproj b/build/MSICA.vcxproj
similarity index 86%
rename from MSICA/MSICA.vcxproj
rename to build/MSICA.vcxproj
index 8dca1f1..24976ca 100644
--- a/MSICA/MSICA.vcxproj
+++ b/build/MSICA.vcxproj
@@ -1,108 +1,108 @@
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- {A7D9EBC1-1E64-4399-9C88-6692F8742153}
- v4.0
-
-
-
- DynamicLibrary
- Static
- Unicode
- true
-
-
- DynamicLibrary
- Static
- Unicode
-
-
- DynamicLibrary
- Static
- Unicode
- true
-
-
- DynamicLibrary
- Static
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.30319.1
-
-
-
-
-
-
-
-
- Create
- Create
- Create
- Create
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {8552ee55-177e-4f51-b51b-baf7d6462cde}
-
-
-
-
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {A7D9EBC1-1E64-4399-9C88-6692F8742153}
+ v4.0
+
+
+
+ DynamicLibrary
+ Static
+ Unicode
+ true
+
+
+ DynamicLibrary
+ Static
+ Unicode
+
+
+ DynamicLibrary
+ Static
+ Unicode
+ true
+
+
+ DynamicLibrary
+ Static
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+
+
+
+
+
+
+
+
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {8552ee55-177e-4f51-b51b-baf7d6462cde}
+
+
+
+
\ No newline at end of file
diff --git a/MSICA/MSICA.vcxproj.filters b/build/MSICA.vcxproj.filters
similarity index 82%
rename from MSICA/MSICA.vcxproj.filters
rename to build/MSICA.vcxproj.filters
index 7b43fa9..b533e09 100644
--- a/MSICA/MSICA.vcxproj.filters
+++ b/build/MSICA.vcxproj.filters
@@ -1,43 +1,43 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hpp;hxx;hm;inl;inc;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;rcx;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;po
-
-
-
-
- Source Files
-
-
- Source Files
-
-
-
-
- Header Files
-
-
- Header Files
-
-
-
-
- Resource Files
-
-
-
-
- Resource Files
-
-
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;rcx;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;po
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Resource Files
+
+
+
+
+ Resource Files
+
+
\ No newline at end of file
diff --git a/include/Debug.props b/include/Debug.props
deleted file mode 100644
index 5dbde3a..0000000
--- a/include/Debug.props
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
- <_PropertySheetDisplayName>MSICA Debug
-
-
-
- Disabled
- _DEBUG;%(PreprocessorDefinitions)
- MultiThreadedDebug
- EnableFastChecks
- true
-
-
- _DEBUG;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/MSICA/MSICA.h b/include/MSICA.h
similarity index 100%
rename from MSICA/MSICA.h
rename to include/MSICA.h
diff --git a/include/Release.props b/include/Release.props
deleted file mode 100644
index 5dab654..0000000
--- a/include/Release.props
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
- <_PropertySheetDisplayName>MSICA Release
-
-
-
- Full
-
-
-
-
- OnlyExplicitInline
-
-
-
-
- true
-
-
-
-
- Speed
-
-
-
-
- true
-
-
-
-
- true
- NDEBUG;%(PreprocessorDefinitions)
- MultiThreaded
-
-
- NDEBUG;%(PreprocessorDefinitions)
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/include/Win32.props b/include/Win32.props
deleted file mode 100644
index b63e5b4..0000000
--- a/include/Win32.props
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
- <_PropertySheetDisplayName>MSICA Win32
-
-
-
- MachineX86
-
-
- Windows
- MachineX86
-
-
-
-
\ No newline at end of file
diff --git a/include/common.props b/include/common.props
deleted file mode 100644
index 09dfc50..0000000
--- a/include/common.props
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
- temp\$(ProjectName).$(Platform).$(Configuration)\
- <_PropertySheetDisplayName>MSICA Common
- temp\$(ProjectName).$(Platform).$(Configuration)\
-
-
-
- Level3
- WIN32;STRICT;VC_EXTRALEAN;_WIN32_WINNT=0x0501;_WINSOCKAPI_;_ATL_APARTMENT_THREADED;%(PreprocessorDefinitions)
- Use
- stdafx.h
- ProgramDatabase
- true
-
-
- true
- true
- true
-
-
- $(IntDir);%(AdditionalIncludeDirectories)
-
-
-
-
\ No newline at end of file
diff --git a/include/x64.props b/include/x64.props
deleted file mode 100644
index 30140ff..0000000
--- a/include/x64.props
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
- <_PropertySheetDisplayName>MSICA x64
-
-
-
- MachineX64
-
-
- Windows
- MachineX64
-
-
-
-
\ No newline at end of file
diff --git a/lib/MSICALib b/lib/MSICALib
deleted file mode 160000
index fc7c336..0000000
--- a/lib/MSICALib
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit fc7c3365bafd09a2b4211ce1dc4a922dde1be37c
diff --git a/lib/atlex b/lib/atlex
deleted file mode 160000
index b04fe38..0000000
--- a/lib/atlex
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b04fe38b3f8956946b2b1961156f39dbac114424
diff --git a/MSICA/MSICA.rc b/res/MSICA.rc
similarity index 99%
rename from MSICA/MSICA.rc
rename to res/MSICA.rc
index a44bdb2..3470e08 100644
Binary files a/MSICA/MSICA.rc and b/res/MSICA.rc differ
diff --git a/MSICA/MSICA.cpp b/src/MSICA.cpp
similarity index 100%
rename from MSICA/MSICA.cpp
rename to src/MSICA.cpp
diff --git a/MSICA/stdafx.cpp b/src/stdafx.cpp
similarity index 100%
rename from MSICA/stdafx.cpp
rename to src/stdafx.cpp
diff --git a/MSICA/stdafx.h b/src/stdafx.h
similarity index 96%
rename from MSICA/stdafx.h
rename to src/stdafx.h
index 8285467..438f852 100644
--- a/MSICA/stdafx.h
+++ b/src/stdafx.h
@@ -1,44 +1,44 @@
-/*
- Copyright 1991-2016 Amebis
-
- This file is part of MSICA.
-
- MSICA is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- MSICA is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with MSICA. If not, see .
-*/
-
-#pragma once
-
-#ifdef _WINDLL
-#define MSICA_DLL // This library is compiled as a DLL
-#endif
-
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-
-// Must not statically link to Wlanapi.dll as it is not available on Windows
-// without a WLAN interface.
-extern VOID (WINAPI *pfnWlanFreeMemory)(__in PVOID pMemory);
-extern DWORD (WINAPI *pfnWlanOpenHandle)(__in DWORD dwClientVersion, __reserved PVOID pReserved, __out PDWORD pdwNegotiatedVersion, __out PHANDLE phClientHandle);
-extern DWORD (WINAPI *pfnWlanCloseHandle)(__in HANDLE hClientHandle, __reserved PVOID pReserved);
-extern DWORD (WINAPI *pfnWlanEnumInterfaces)(__in HANDLE hClientHandle, __reserved PVOID pReserved, __deref_out PWLAN_INTERFACE_INFO_LIST *ppInterfaceList);
-
-#include
-
-#include "MSICA.h"
+/*
+ Copyright 1991-2016 Amebis
+
+ This file is part of MSICA.
+
+ MSICA is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ MSICA is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with MSICA. If not, see .
+*/
+
+#pragma once
+
+#ifdef _WINDLL
+#define MSICA_DLL // This library is compiled as a DLL
+#endif
+
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+// Must not statically link to Wlanapi.dll as it is not available on Windows
+// without a WLAN interface.
+extern VOID (WINAPI *pfnWlanFreeMemory)(__in PVOID pMemory);
+extern DWORD (WINAPI *pfnWlanOpenHandle)(__in DWORD dwClientVersion, __reserved PVOID pReserved, __out PDWORD pdwNegotiatedVersion, __out PHANDLE phClientHandle);
+extern DWORD (WINAPI *pfnWlanCloseHandle)(__in HANDLE hClientHandle, __reserved PVOID pReserved);
+extern DWORD (WINAPI *pfnWlanEnumInterfaces)(__in HANDLE hClientHandle, __reserved PVOID pReserved, __deref_out PWLAN_INTERFACE_INFO_LIST *ppInterfaceList);
+
+#include
+
+#include