https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7ceaee6d192b60fb59342…
commit 7ceaee6d192b60fb59342740b174a0f2cc5ef2f3
Author: winesync <ros-dev(a)reactos.org>
AuthorDate: Sun Mar 13 19:08:59 2022 +0100
Commit: Mark Jansen <mark.jansen(a)reactos.org>
CommitDate: Sun Mar 20 19:28:34 2022 +0100
[WINESYNC] msi: Use wide character string literals in action.c.
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
wine commit id 8e13b0b99c823bc22c7eef8b8dac04de283ca462 by Hans Leidekker
<hans(a)codeweavers.com>
---
dll/win32/msi/action.c | 1362 ++++++++++++---------------------------
sdk/include/reactos/wine/test.h | 1 +
2 files changed, 426 insertions(+), 937 deletions(-)
diff --git a/dll/win32/msi/action.c b/dll/win32/msi/action.c
index ee3686840a6..f6f03ccb59a 100644
--- a/dll/win32/msi/action.c
+++ b/dll/win32/msi/action.c
@@ -46,117 +46,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(msi);
-static const WCHAR szCreateFolders[] =
-
{'C','r','e','a','t','e','F','o','l','d','e','r','s',0};
-static const WCHAR szCostFinalize[] =
-
{'C','o','s','t','F','i','n','a','l','i','z','e',0};
-static const WCHAR szWriteRegistryValues[] =
-
{'W','r','i','t','e','R','e','g','i','s','t','r','y','V','a','l','u','e','s',0};
-static const WCHAR szFileCost[] =
-
{'F','i','l','e','C','o','s','t',0};
-static const WCHAR szInstallInitialize[] =
-
{'I','n','s','t','a','l','l','I','n','i','t','i','a','l','i','z','e',0};
-static const WCHAR szInstallValidate[] =
-
{'I','n','s','t','a','l','l','V','a','l','i','d','a','t','e',0};
-static const WCHAR szLaunchConditions[] =
-
{'L','a','u','n','c','h','C','o','n','d','i','t','i','o','n','s',0};
-static const WCHAR szProcessComponents[] =
-
{'P','r','o','c','e','s','s','C','o','m','p','o','n','e','n','t','s',0};
-static const WCHAR szRegisterTypeLibraries[] =
-
{'R','e','g','i','s','t','e','r','T','y','p','e','L','i','b','r','a','r','i','e','s',0};
-static const WCHAR szCreateShortcuts[] =
-
{'C','r','e','a','t','e','S','h','o','r','t','c','u','t','s',0};
-static const WCHAR szPublishProduct[] =
-
{'P','u','b','l','i','s','h','P','r','o','d','u','c','t',0};
-static const WCHAR szWriteIniValues[] =
-
{'W','r','i','t','e','I','n','i','V','a','l','u','e','s',0};
-static const WCHAR szSelfRegModules[] =
-
{'S','e','l','f','R','e','g','M','o','d','u','l','e','s',0};
-static const WCHAR szPublishFeatures[] =
-
{'P','u','b','l','i','s','h','F','e','a','t','u','r','e','s',0};
-static const WCHAR szRegisterProduct[] =
-
{'R','e','g','i','s','t','e','r','P','r','o','d','u','c','t',0};
-static const WCHAR szInstallExecute[] =
-
{'I','n','s','t','a','l','l','E','x','e','c','u','t','e',0};
-static const WCHAR szInstallExecuteAgain[] =
-
{'I','n','s','t','a','l','l','E','x','e','c','u','t','e','A','g','a','i','n',0};
-static const WCHAR szInstallFinalize[] =
-
{'I','n','s','t','a','l','l','F','i','n','a','l','i','z','e',0};
-static const WCHAR szForceReboot[] =
-
{'F','o','r','c','e','R','e','b','o','o','t',0};
-static const WCHAR szResolveSource[] =
-
{'R','e','s','o','l','v','e','S','o','u','r','c','e',0};
-static const WCHAR szAllocateRegistrySpace[] =
-
{'A','l','l','o','c','a','t','e','R','e','g','i','s','t','r','y','S','p','a','c','e',0};
-static const WCHAR szBindImage[] =
-
{'B','i','n','d','I','m','a','g','e',0};
-static const WCHAR szDeleteServices[] =
-
{'D','e','l','e','t','e','S','e','r','v','i','c','e','s',0};
-static const WCHAR szDisableRollback[] =
-
{'D','i','s','a','b','l','e','R','o','l','l','b','a','c','k',0};
-static const WCHAR szExecuteAction[] =
-
{'E','x','e','c','u','t','e','A','c','t','i','o','n',0};
-static const WCHAR szInstallAdminPackage[] =
-
{'I','n','s','t','a','l','l','A','d','m','i','n','P','a','c','k','a','g','e',0};
-static const WCHAR szInstallSFPCatalogFile[] =
-
{'I','n','s','t','a','l','l','S','F','P','C','a','t','a','l','o','g','F','i','l','e',0};
-static const WCHAR szIsolateComponents[] =
-
{'I','s','o','l','a','t','e','C','o','m','p','o','n','e','n','t','s',0};
-static const WCHAR szMigrateFeatureStates[] =
-
{'M','i','g','r','a','t','e','F','e','a','t','u','r','e','S','t','a','t','e','s',0};
-static const WCHAR szInstallODBC[] =
-
{'I','n','s','t','a','l','l','O','D','B','C',0};
-static const WCHAR szInstallServices[] =
-
{'I','n','s','t','a','l','l','S','e','r','v','i','c','e','s',0};
-static const WCHAR szPublishComponents[] =
-
{'P','u','b','l','i','s','h','C','o','m','p','o','n','e','n','t','s',0};
-static const WCHAR szRegisterComPlus[] =
-
{'R','e','g','i','s','t','e','r','C','o','m','P','l','u','s',0};
-static const WCHAR szRegisterUser[] =
-
{'R','e','g','i','s','t','e','r','U','s','e','r',0};
-static const WCHAR szRemoveEnvironmentStrings[] =
-
{'R','e','m','o','v','e','E','n','v','i','r','o','n','m','e','n','t','S','t','r','i','n','g','s',0};
-static const WCHAR szRemoveExistingProducts[] =
-
{'R','e','m','o','v','e','E','x','i','s','t','i','n','g','P','r','o','d','u','c','t','s',0};
-static const WCHAR szRemoveFolders[] =
-
{'R','e','m','o','v','e','F','o','l','d','e','r','s',0};
-static const WCHAR szRemoveIniValues[] =
-
{'R','e','m','o','v','e','I','n','i','V','a','l','u','e','s',0};
-static const WCHAR szRemoveODBC[] =
-
{'R','e','m','o','v','e','O','D','B','C',0};
-static const WCHAR szRemoveRegistryValues[] =
-
{'R','e','m','o','v','e','R','e','g','i','s','t','r','y','V','a','l','u','e','s',0};
-static const WCHAR szRemoveShortcuts[] =
-
{'R','e','m','o','v','e','S','h','o','r','t','c','u','t','s',0};
-static const WCHAR szRMCCPSearch[] =
-
{'R','M','C','C','P','S','e','a','r','c','h',0};
-static const WCHAR szScheduleReboot[] =
-
{'S','c','h','e','d','u','l','e','R','e','b','o','o','t',0};
-static const WCHAR szSelfUnregModules[] =
-
{'S','e','l','f','U','n','r','e','g','M','o','d','u','l','e','s',0};
-static const WCHAR szSetODBCFolders[] =
-
{'S','e','t','O','D','B','C','F','o','l','d','e','r','s',0};
-static const WCHAR szStartServices[] =
-
{'S','t','a','r','t','S','e','r','v','i','c','e','s',0};
-static const WCHAR szStopServices[] =
-
{'S','t','o','p','S','e','r','v','i','c','e','s',0};
-static const WCHAR szUnpublishComponents[] =
-
{'U','n','p','u','b','l','i','s','h',
'C','o','m','p','o','n','e','n','t','s',0};
-static const WCHAR szUnpublishFeatures[] =
-
{'U','n','p','u','b','l','i','s','h','F','e','a','t','u','r','e','s',0};
-static const WCHAR szUnpublishProduct[] =
-
{'U','n','p','u','b','l','i','s','h','P','r','o','d','u','c','t',0};
-static const WCHAR szUnregisterComPlus[] =
-
{'U','n','r','e','g','i','s','t','e','r','C','o','m','P','l','u','s',0};
-static const WCHAR szUnregisterTypeLibraries[] =
-
{'U','n','r','e','g','i','s','t','e','r','T','y','p','e','L','i','b','r','a','r','i','e','s',0};
-static const WCHAR szValidateProductID[] =
-
{'V','a','l','i','d','a','t','e','P','r','o','d','u','c','t','I','D',0};
-static const WCHAR szWriteEnvironmentStrings[] =
-
{'W','r','i','t','e','E','n','v','i','r','o','n','m','e','n','t','S','t','r','i','n','g','s',0};
-static const WCHAR szINSTALL[] =
-
{'I','N','S','T','A','L','L',0};
-
struct dummy_thread
{
HANDLE started;
@@ -166,13 +55,10 @@ struct dummy_thread
static INT ui_actionstart(MSIPACKAGE *package, LPCWSTR action, LPCWSTR description,
LPCWSTR template)
{
- static const WCHAR query[] =
{'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','A','c','t','i','o','n','T','e','x','t','`','
','W','H','E','R','E',' ',
-
'`','A','c','t','i','o','n','`','
','=','
','\'','%','s','\'',0};
MSIRECORD *row, *textrow;
INT rc;
- textrow = MSI_QueryGetRecord(package->db, query, action);
+ textrow = MSI_QueryGetRecord(package->db, L"SELECT * FROM `ActionText` WHERE
`Action` = '%s'", action);
if (textrow)
{
description = MSI_RecordGetString(textrow, 2);
@@ -373,7 +259,7 @@ UINT msi_parse_command_line( MSIPACKAGE *package, LPCWSTR
szCommandLine,
TRACE("Found commandline property %s = %s\n", debugstr_w(prop),
debugstr_w(val));
r = msi_set_property( package->db, prop, val, -1 );
- if (r == ERROR_SUCCESS && !wcscmp( prop, szSourceDir ))
+ if (r == ERROR_SUCCESS && !wcscmp( prop, L"SourceDir" ))
msi_reset_source_folders( package );
msi_free( val );
@@ -454,14 +340,10 @@ WCHAR **msi_split_string( const WCHAR *str, WCHAR sep )
static BOOL ui_sequence_exists( MSIPACKAGE *package )
{
- static const WCHAR query [] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','I','n','s','t','a','l','l','U','I','S','e','q','u','e','n','c','e','`','
',
- 'W','H','E','R','E','
','`','S','e','q','u','e','n','c','e','`','
','>',' ','0',0};
MSIQUERY *view;
DWORD count = 0;
- if (!(MSI_DatabaseOpenViewW( package->db, query, &view )))
+ if (!(MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `InstallUISequence`
WHERE `Sequence` > 0", &view )))
{
MSI_IterateRecords( view, &count, NULL, package );
msiobj_release( &view->hdr );
@@ -474,7 +356,7 @@ UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
WCHAR *source, *check, *p, *db;
DWORD len;
- if (!(db = msi_dup_property( package->db, szOriginalDatabase )))
+ if (!(db = msi_dup_property( package->db, L"OriginalDatabase" )))
return ERROR_OUTOFMEMORY;
if (!(p = wcsrchr( db, '\\' )) && !(p = wcsrchr( db, '/' )))
@@ -487,18 +369,18 @@ UINT msi_set_sourcedir_props(MSIPACKAGE *package, BOOL replace)
lstrcpynW( source, db, len );
msi_free( db );
- check = msi_dup_property( package->db, szSourceDir );
+ check = msi_dup_property( package->db, L"SourceDir" );
if (!check || replace)
{
- UINT r = msi_set_property( package->db, szSourceDir, source, -1 );
+ UINT r = msi_set_property( package->db, L"SourceDir", source, -1 );
if (r == ERROR_SUCCESS)
msi_reset_source_folders( package );
}
msi_free( check );
- check = msi_dup_property( package->db, szSOURCEDIR );
+ check = msi_dup_property( package->db, L"SOURCEDIR" );
if (!check || replace)
- msi_set_property( package->db, szSOURCEDIR, source, -1 );
+ msi_set_property( package->db, L"SOURCEDIR", source, -1 );
msi_free( check );
msi_free( source );
@@ -516,7 +398,7 @@ UINT msi_set_context(MSIPACKAGE *package)
UINT r = msi_locate_product( package->ProductCode, &package->Context );
if (r != ERROR_SUCCESS)
{
- int num = msi_get_property_int( package->db, szAllUsers, 0 );
+ int num = msi_get_property_int( package->db, L"ALLUSERS", 0 );
if (num == 1 || num == 2)
package->Context = MSIINSTALLCONTEXT_MACHINE;
else
@@ -569,17 +451,12 @@ static UINT ITERATE_Actions(MSIRECORD *row, LPVOID param)
UINT MSI_Sequence( MSIPACKAGE *package, LPCWSTR table )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
','`','%','s','`',
- ' ','W','H','E','R','E','
','`','S','e','q','u','e','n','c','e','`','
',
- '>',' ','0','
','O','R','D','E','R','
','B','Y',' ',
-
'`','S','e','q','u','e','n','c','e','`',0};
MSIQUERY *view;
UINT r;
TRACE("%p %s\n", package, debugstr_w(table));
- r = MSI_OpenQuery( package->db, &view, query, table );
+ r = MSI_OpenQuery( package->db, &view, L"SELECT * FROM `%s` WHERE
`Sequence` > 0 ORDER BY `Sequence`", table );
if (r == ERROR_SUCCESS)
{
r = MSI_IterateRecords( view, NULL, ITERATE_Actions, package );
@@ -590,12 +467,6 @@ UINT MSI_Sequence( MSIPACKAGE *package, LPCWSTR table )
static UINT ACTION_ProcessExecSequence(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ', 'F','R','O','M','
',
-
'`','I','n','s','t','a','l','l','E','x','e','c','u','t','e',
-
'S','e','q','u','e','n','c','e','`','
', 'W','H','E','R','E',' ',
-
'`','S','e','q','u','e','n','c','e','`','
', '>',' ','0',' ',
- 'O','R','D','E','R',' ',
'B','Y','
','`','S','e','q','u','e','n','c','e','`',0};
MSIQUERY *view;
UINT rc;
@@ -607,12 +478,13 @@ static UINT ACTION_ProcessExecSequence(MSIPACKAGE *package)
package->ExecuteSequenceRun = TRUE;
- rc = MSI_OpenQuery(package->db, &view, query);
+ rc = MSI_OpenQuery(package->db, &view,
+ L"SELECT * FROM `InstallExecuteSequence` WHERE `Sequence`
> 0 ORDER BY `Sequence`");
if (rc == ERROR_SUCCESS)
{
TRACE("Running the actions\n");
- msi_set_property( package->db, szSourceDir, NULL, -1 );
+ msi_set_property( package->db, L"SourceDir", NULL, -1 );
rc = MSI_IterateRecords(view, NULL, ITERATE_Actions, package);
msiobj_release(&view->hdr);
}
@@ -621,18 +493,15 @@ static UINT ACTION_ProcessExecSequence(MSIPACKAGE *package)
static UINT ACTION_ProcessUISequence(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','I','n','s','t','a','l','l','U','I','S','e','q','u','e','n','c','e','`','
',
- 'W','H','E','R','E','
','`','S','e','q','u','e','n','c','e','`','
','>',' ','0',' ',
- 'O','R','D','E','R','
','B','Y','
','`','S','e','q','u','e','n','c','e','`',0};
MSIQUERY *view;
UINT rc;
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db,
+ L"SELECT * FROM `InstallUISequence` WHERE `Sequence`
> 0 ORDER BY `Sequence`",
+ &view);
if (rc == ERROR_SUCCESS)
{
- TRACE("Running the actions\n");
+ TRACE("Running the actions\n");
rc = MSI_IterateRecords(view, NULL, ITERATE_Actions, package);
msiobj_release(&view->hdr);
}
@@ -813,16 +682,13 @@ static UINT ITERATE_CreateFolders(MSIRECORD *row, LPVOID param)
static UINT ACTION_CreateFolders(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','C','r','e','a','t','e','F','o','l','d','e','r','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szCreateFolders);
+ return msi_schedule_action(package, SCRIPT_INSTALL, L"CreateFolders");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`CreateFolder`", &view );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -895,16 +761,13 @@ static UINT ITERATE_RemoveFolders( MSIRECORD *row, LPVOID param )
static UINT ACTION_RemoveFolders( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','C','r','e','a','t','e','F','o','l','d','e','r','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRemoveFolders);
+ return msi_schedule_action(package, SCRIPT_INSTALL, L"RemoveFolders");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`CreateFolder`", &view );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -945,16 +808,13 @@ static UINT load_component( MSIRECORD *row, LPVOID param )
UINT msi_load_all_components( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','C','o','m','p','o','n','e','n','t','`',0};
MSIQUERY *view;
UINT r;
if (!list_empty(&package->components))
return ERROR_SUCCESS;
- r = MSI_DatabaseOpenViewW( package->db, query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Component`",
&view );
if (r != ERROR_SUCCESS)
return r;
@@ -1015,13 +875,8 @@ static UINT iterate_load_featurecomponents(MSIRECORD *row, LPVOID
param)
return ERROR_SUCCESS;
}
-static UINT load_feature(MSIRECORD * row, LPVOID param)
+static UINT load_feature(MSIRECORD *row, LPVOID param)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','`','C','o','m','p','o','n','e','n','t','_','`',
- ' ','F','R','O','M','
','`','F','e','a','t','u','r','e',
-
'C','o','m','p','o','n','e','n','t','s','`','
','W','H','E','R','E',' ',
- '`','F','e',
'a','t','u','r','e','_','`','
','=','\'','%','s','\'',0};
MSIPACKAGE *package = param;
MSIFEATURE *feature;
MSIQUERY *view;
@@ -1036,7 +891,7 @@ static UINT load_feature(MSIRECORD * row, LPVOID param)
list_init( &feature->Children );
list_init( &feature->Components );
-
+
feature->Feature = msi_dup_record_field( row, 1 );
TRACE("Loading feature %s\n",debugstr_w(feature->Feature));
@@ -1047,7 +902,7 @@ static UINT load_feature(MSIRECORD * row, LPVOID param)
if (!MSI_RecordIsNull(row,5))
feature->Display = MSI_RecordGetInteger(row,5);
-
+
feature->Level= MSI_RecordGetInteger(row,6);
feature->Directory = msi_dup_record_field( row, 7 );
feature->Attributes = MSI_RecordGetInteger(row,8);
@@ -1060,7 +915,8 @@ static UINT load_feature(MSIRECORD * row, LPVOID param)
/* load feature components */
- rc = MSI_OpenQuery( package->db, &view, query, feature->Feature );
+ rc = MSI_OpenQuery( package->db, &view, L"SELECT `Component_` FROM
`FeatureComponents` WHERE `Feature_` = '%s'",
+ feature->Feature );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -1094,17 +950,13 @@ static UINT find_feature_children(MSIRECORD * row, LPVOID param)
UINT msi_load_all_features( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','F','e','a','t','u','r','e','`','
','O','R','D','E','R','
','B','Y',' ',
-
'`','D','i','s','p','l','a','y','`',0};
MSIQUERY *view;
UINT r;
if (!list_empty(&package->features))
return ERROR_SUCCESS;
-
- r = MSI_DatabaseOpenViewW( package->db, query, &view );
+
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Feature` ORDER BY
`Display`", &view );
if (r != ERROR_SUCCESS)
return r;
@@ -1132,17 +984,13 @@ static LPWSTR folder_split_path(LPWSTR p, WCHAR ch)
static UINT load_file_hash(MSIPACKAGE *package, MSIFILE *file)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ', 'F','R','O','M','
',
-
'`','M','s','i','F','i','l','e','H','a','s','h','`','
',
- 'W','H','E','R','E','
','`','F','i','l','e','_','`','
','=','
','\'','%','s','\'',0};
MSIQUERY *view = NULL;
MSIRECORD *row = NULL;
UINT r;
TRACE("%s\n", debugstr_w(file->File));
- r = MSI_OpenQuery(package->db, &view, query, file->File);
+ r = MSI_OpenQuery(package->db, &view, L"SELECT * FROM `MsiFileHash` WHERE
`File_` = '%s'", file->File);
if (r != ERROR_SUCCESS)
goto done;
@@ -1168,13 +1016,8 @@ done:
static UINT load_file_disk_id( MSIPACKAGE *package, MSIFILE *file )
{
- MSIRECORD *row;
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','`','D','i','s','k','I','d','`','
', 'F','R','O','M',' ',
-
'`','M','e','d','i','a','`','
','W','H','E','R','E',' ',
-
'`','L','a','s','t','S','e','q','u','e','n','c','e','`','
','>','=',' ','%','i',0};
-
- row = MSI_QueryGetRecord( package->db, query, file->Sequence );
+ MSIRECORD *row = MSI_QueryGetRecord( package->db, L"SELECT `DiskId` FROM
`Media` WHERE `LastSequence` >= %d",
+ file->Sequence );
if (!row)
{
WARN("query failed\n");
@@ -1197,7 +1040,7 @@ static UINT load_file(MSIRECORD *row, LPVOID param)
file = msi_alloc_zero( sizeof (MSIFILE) );
if (!file)
return ERROR_NOT_ENOUGH_MEMORY;
-
+
file->File = msi_dup_record_field( row, 1 );
component = MSI_RecordGetString( row, 2 );
@@ -1216,7 +1059,7 @@ static UINT load_file(MSIRECORD *row, LPVOID param)
file->ShortName = msi_dup_record_field( row, 3 );
file->LongName = strdupW( folder_split_path(file->ShortName, '|'));
-
+
file->FileSize = MSI_RecordGetInteger( row, 4 );
file->Version = msi_dup_record_field( row, 5 );
file->Language = msi_dup_record_field( row, 6 );
@@ -1248,23 +1091,18 @@ static UINT load_file(MSIRECORD *row, LPVOID param)
TRACE("File loaded (file %s sequence %u)\n", debugstr_w(file->File),
file->Sequence);
list_add_tail( &package->files, &file->entry );
-
return ERROR_SUCCESS;
}
static UINT load_all_files(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ', 'F','R','O','M','
',
- '`','F','i','l','e','`','
', 'O','R','D','E','R','
','B','Y',' ',
-
'`','S','e','q','u','e','n','c','e','`',
0};
MSIQUERY *view;
UINT rc;
if (!list_empty(&package->files))
return ERROR_SUCCESS;
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `File` ORDER BY
`Sequence`", &view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -1288,14 +1126,10 @@ static UINT load_media( MSIRECORD *row, LPVOID param )
static UINT load_all_media( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
','`',
- 'M','e','d','i','a','`','
','O','R','D','E','R','
','B','Y',' ',
-
'`','D','i','s','k','I','d','`',0};
MSIQUERY *view;
UINT r;
- r = MSI_DatabaseOpenViewW( package->db, query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Media` ORDER BY
`DiskId`", &view );
if (r != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -1306,13 +1140,9 @@ static UINT load_all_media( MSIPACKAGE *package )
static UINT load_patch_disk_id( MSIPACKAGE *package, MSIFILEPATCH *patch )
{
- static const WCHAR query[] =
- {'S','E','L','E','C','T','
','`','D','i','s','k','I','d','`','
', 'F','R','O','M',' ',
-
'`','M','e','d','i','a','`','
','W','H','E','R','E',' ',
-
'`','L','a','s','t','S','e','q','u','e','n','c','e','`','
','>','=',' ','%','u',0};
- MSIRECORD *rec;
-
- if (!(rec = MSI_QueryGetRecord( package->db, query, patch->Sequence )))
+ MSIRECORD *rec = MSI_QueryGetRecord( package->db, L"SELECT `DiskId` FROM
`Media` WHERE `LastSequence` >= %u",
+ patch->Sequence );
+ if (!rec)
{
WARN("query failed\n");
return ERROR_FUNCTION_FAILED;
@@ -1362,17 +1192,13 @@ static UINT load_patch(MSIRECORD *row, LPVOID param)
static UINT load_all_patches(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','P','a','t','c','h','`','
','O','R','D','E','R','
','B','Y',' ',
-
'`','S','e','q','u','e','n','c','e','`',0};
MSIQUERY *view;
UINT rc;
if (!list_empty(&package->filepatches))
return ERROR_SUCCESS;
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `Patch` ORDER BY
`Sequence`", &view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -1426,14 +1252,11 @@ static void mark_patched_components( MSIPACKAGE *package )
static UINT load_folder_persistence( MSIPACKAGE *package, MSIFOLDER *folder )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','C','r','e','a','t','e','F','o','l','d','e','r','`','
','W','H','E','R','E',' ',
-
'`','D','i','r','e','c','t','o','r','y','_','`','
','=','\'','%','s','\'',0};
MSIQUERY *view;
folder->persistent = FALSE;
- if (!MSI_OpenQuery( package->db, &view, query, folder->Directory ))
+ if (!MSI_OpenQuery( package->db, &view, L"SELECT * FROM `CreateFolder`
WHERE `Directory_` = '%s'",
+ folder->Directory ))
{
if (!MSI_ViewExecute( view, NULL ))
{
@@ -1453,7 +1276,7 @@ static UINT load_folder_persistence( MSIPACKAGE *package, MSIFOLDER
*folder )
static UINT load_folder( MSIRECORD *row, LPVOID param )
{
MSIPACKAGE *package = param;
- static WCHAR szEmpty[] = { 0 };
+ static WCHAR szEmpty[] = {0};
LPWSTR p, tgt_short, tgt_long, src_short, src_long;
MSIFOLDER *folder;
@@ -1474,9 +1297,9 @@ static UINT load_folder( MSIRECORD *row, LPVOID param )
src_long = folder_split_path( src_short, '|' );
/* check for no-op dirs */
- if (tgt_short && !wcscmp( szDot, tgt_short ))
+ if (tgt_short && !wcscmp( L".", tgt_short ))
tgt_short = szEmpty;
- if (src_short && !wcscmp( szDot, src_short ))
+ if (src_short && !wcscmp( L".", src_short ))
src_short = szEmpty;
if (!tgt_long)
@@ -1534,16 +1357,13 @@ static UINT find_folder_children( MSIRECORD *row, LPVOID param )
static UINT load_all_folders( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','D','i','r','e','c','t','o','r','y','`',0};
MSIQUERY *view;
UINT r;
if (!list_empty(&package->folders))
return ERROR_SUCCESS;
- r = MSI_DatabaseOpenViewW( package->db, query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Directory`",
&view );
if (r != ERROR_SUCCESS)
return r;
@@ -1560,8 +1380,8 @@ static UINT load_all_folders( MSIPACKAGE *package )
static UINT ACTION_CostInitialize(MSIPACKAGE *package)
{
- msi_set_property( package->db, szCostingComplete, szZero, -1 );
- msi_set_property( package->db, szRootDrive, szCRoot, -1 );
+ msi_set_property( package->db, L"CostingComplete", L"0", -1
);
+ msi_set_property( package->db, L"ROOTDRIVE", L"C:\\", -1 );
load_all_folders( package );
msi_load_all_components( package );
@@ -1629,7 +1449,7 @@ static void get_client_counts( MSIPACKAGE *package )
{
if (!comp->ComponentId) continue;
- if (MSIREG_OpenUserDataComponentKey( comp->ComponentId, szLocalSid, &hkey,
FALSE ) &&
+ if (MSIREG_OpenUserDataComponentKey( comp->ComponentId, L"S-1-5-18",
&hkey, FALSE ) &&
MSIREG_OpenUserDataComponentKey( comp->ComponentId, NULL, &hkey, FALSE
))
{
comp->num_clients = 0;
@@ -1694,8 +1514,8 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
{
LPWSTR override;
MSIFEATURE *feature;
- BOOL remove = !wcscmp(property, szRemove);
- BOOL reinstall = !wcscmp(property, szReinstall);
+ BOOL remove = !wcscmp(property, L"REMOVE");
+ BOOL reinstall = !wcscmp(property, L"REINSTALL");
override = msi_dup_property( package->db, property );
if (!override)
@@ -1711,7 +1531,7 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
else if (remove)
state = (feature->Installed == INSTALLSTATE_ABSENT ? INSTALLSTATE_UNKNOWN
: INSTALLSTATE_ABSENT);
- if (!wcsicmp( override, szAll ))
+ if (!wcsicmp( override, L"ALL" ))
{
feature->Action = state;
feature->ActionRequest = state;
@@ -1748,12 +1568,6 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
static BOOL process_overrides( MSIPACKAGE *package, int level )
{
- static const WCHAR szAddLocal[] =
-
{'A','D','D','L','O','C','A','L',0};
- static const WCHAR szAddSource[] =
-
{'A','D','D','S','O','U','R','C','E',0};
- static const WCHAR szAdvertise[] =
-
{'A','D','V','E','R','T','I','S','E',0};
BOOL ret = FALSE;
/* all these activation/deactivation things happen in order and things
@@ -1772,14 +1586,14 @@ static BOOL process_overrides( MSIPACKAGE *package, int level )
* 10 FILEADDSOURCE
* 11 FILEADDDEFAULT
*/
- ret |= process_state_property( package, level, szAddLocal, INSTALLSTATE_LOCAL );
- ret |= process_state_property( package, level, szRemove, INSTALLSTATE_ABSENT );
- ret |= process_state_property( package, level, szAddSource, INSTALLSTATE_SOURCE );
- ret |= process_state_property( package, level, szReinstall, INSTALLSTATE_UNKNOWN );
- ret |= process_state_property( package, level, szAdvertise, INSTALLSTATE_ADVERTISED
);
+ ret |= process_state_property( package, level, L"ADDLOCAL",
INSTALLSTATE_LOCAL );
+ ret |= process_state_property( package, level, L"REMOVE",
INSTALLSTATE_ABSENT );
+ ret |= process_state_property( package, level, L"ADDSOURCE",
INSTALLSTATE_SOURCE );
+ ret |= process_state_property( package, level, L"REINSTALL",
INSTALLSTATE_UNKNOWN );
+ ret |= process_state_property( package, level, L"ADVERTISE",
INSTALLSTATE_ADVERTISED );
if (ret)
- msi_set_property( package->db, szPreselected, szOne, -1 );
+ msi_set_property( package->db, L"Preselected", L"1", -1
);
return ret;
}
@@ -1831,9 +1645,9 @@ UINT MSI_SetFeatureStates(MSIPACKAGE *package)
TRACE("Checking Install Level\n");
- level = msi_get_property_int(package->db, szInstallLevel, 1);
+ level = msi_get_property_int(package->db, L"INSTALLLEVEL", 1);
- if (msi_get_property_int( package->db, szPreselected, 0 ))
+ if (msi_get_property_int( package->db, L"Preselected", 0 ))
{
LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
{
@@ -1854,7 +1668,7 @@ UINT MSI_SetFeatureStates(MSIPACKAGE *package)
}
}
}
- else if (!msi_get_property_int( package->db, szInstalled, 0 ))
+ else if (!msi_get_property_int( package->db, L"Installed", 0 ))
{
LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry )
{
@@ -2148,7 +1962,7 @@ static WCHAR *create_temp_dir( MSIDATABASE *db )
WCHAR tmp[MAX_PATH];
UINT len = ARRAY_SIZE( tmp );
- if (msi_get_property( db, szTempFolder, tmp, &len ) ||
+ if (msi_get_property( db, L"TempFolder", tmp, &len ) ||
GetFileAttributesW( tmp ) != FILE_ATTRIBUTE_DIRECTORY)
{
GetTempPathW( MAX_PATH, tmp );
@@ -2160,7 +1974,7 @@ static WCHAR *create_temp_dir( MSIDATABASE *db )
{
for (;;)
{
- if (!GetTempFileNameW( db->tempfolder, szMsi, ++id, ret ))
+ if (!GetTempFileNameW( db->tempfolder, L"msi", ++id, ret ))
{
msi_free( ret );
return NULL;
@@ -2214,7 +2028,7 @@ WCHAR *msi_build_directory_name( DWORD count, ... )
const WCHAR *str = va_arg( va, const WCHAR * );
if (!str) continue;
lstrcatW( dir, str );
- if ( i + 1 != count && dir[0] && dir[lstrlenW( dir ) - 1] !=
'\\') lstrcatW( dir, szBackSlash );
+ if ( i + 1 != count && dir[0] && dir[lstrlenW( dir ) - 1] !=
'\\') lstrcatW( dir, L"\\" );
}
va_end( va );
return dir;
@@ -2352,7 +2166,7 @@ static WCHAR *get_install_location( MSIPACKAGE *package )
if (!package->ProductCode) return NULL;
if (MSIREG_OpenInstallProps( package->ProductCode, package->Context, NULL,
&hkey, FALSE )) return NULL;
- if ((path = msi_reg_get_val_str( hkey, szInstallLocation )) && !path[0])
+ if ((path = msi_reg_get_val_str( hkey, L"InstallLocation" )) &&
!path[0])
{
msi_free( path );
path = NULL;
@@ -2371,12 +2185,12 @@ void msi_resolve_target_folder( MSIPACKAGE *package, const WCHAR
*name, BOOL loa
if (!(folder = msi_get_loaded_folder( package, name ))) return;
- if (!wcscmp( folder->Directory, szTargetDir )) /* special resolving for target
root dir */
+ if (!wcscmp( folder->Directory, L"TARGETDIR" )) /* special resolving for
target root dir */
{
if (!(path = get_install_location( package )) &&
- (!load_prop || !(path = msi_dup_property( package->db, szTargetDir ))))
+ (!load_prop || !(path = msi_dup_property( package->db,
L"TARGETDIR" ))))
{
- path = msi_dup_property( package->db, szRootDrive );
+ path = msi_dup_property( package->db, L"ROOTDRIVE" );
}
}
else if (!load_prop || !(path = msi_dup_property( package->db,
folder->Directory )))
@@ -2419,33 +2233,13 @@ static ULONGLONG get_volume_space_required( MSIPACKAGE *package )
static UINT ACTION_CostFinalize(MSIPACKAGE *package)
{
- static const WCHAR query[] =
- {'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','C','o','n','d','i','t','i','o','n','`',0};
- static const WCHAR szOutOfDiskSpace[] =
-
{'O','u','t','O','f','D','i','s','k','S','p','a','c','e',0};
- static const WCHAR szPrimaryFolder[] =
-
{'P','R','I','M','A','R','Y','F','O','L','D','E','R',0};
- static const WCHAR szPrimaryVolumePath[] =
-
{'P','r','i','m','a','r','y','V','o','l','u','m','e','P','a','t','h',0};
- static const WCHAR szPrimaryVolumeSpaceAvailable[] =
-
{'P','r','i','m','a','r','y','V','o','l','u','m','e','S','p','a','c','e',
-
'A','v','a','i','l','a','b','l','e',0};
- static const WCHAR szPrimaryVolumeSpaceRequired[] =
-
{'P','r','i','m','a','r','y','V','o','l','u','m','e','S','p','a','c','e',
-
'R','e','q','u','i','r','e','d',0};
- static const WCHAR szPrimaryVolumeSpaceRemaining[] =
-
{'P','r','i','m','a','r','y','V','o','l','u','m','e','S','p','a','c','e',
-
'R','e','m','a','i','n','i','n','g',0};
- static const WCHAR szOutOfNoRbDiskSpace[] =
-
{'O','u','t','O','f','N','o','R','b','D','i','s','k','S','p','a','c','e',0};
MSICOMPONENT *comp;
MSIQUERY *view;
WCHAR *level, *primary_key, *primary_folder;
UINT rc;
TRACE("Building directory properties\n");
- msi_resolve_target_folder( package, szTargetDir, TRUE );
+ msi_resolve_target_folder( package, L"TARGETDIR", TRUE );
TRACE("Evaluating component conditions\n");
LIST_FOR_EACH_ENTRY( comp, &package->components, MSICOMPONENT, entry )
@@ -2464,11 +2258,11 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
ACTION_GetComponentInstallStates(package);
ACTION_GetFeatureInstallStates(package);
- if (!process_overrides( package, msi_get_property_int( package->db,
szInstallLevel, 1 ) ))
+ if (!process_overrides( package, msi_get_property_int( package->db,
L"INSTALLLEVEL", 1 ) ))
{
TRACE("Evaluating feature conditions\n");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`Condition`", &view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, NULL, ITERATE_CostFinalizeConditions, package
);
@@ -2481,22 +2275,21 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
TRACE("Calculating file cost\n");
calculate_file_cost( package );
- msi_set_property( package->db, szCostingComplete, szOne, -1 );
+ msi_set_property( package->db, L"CostingComplete", L"1", -1
);
/* set default run level if not set */
- level = msi_dup_property( package->db, szInstallLevel );
- if (!level) msi_set_property( package->db, szInstallLevel, szOne, -1 );
+ level = msi_dup_property( package->db, L"INSTALLLEVEL" );
+ if (!level) msi_set_property( package->db, L"INSTALLLEVEL",
L"1", -1 );
msi_free(level);
if ((rc = MSI_SetFeatureStates( package ))) return rc;
- if ((primary_key = msi_dup_property( package->db, szPrimaryFolder )))
+ if ((primary_key = msi_dup_property( package->db, L"PRIMARYFOLDER" )))
{
if ((primary_folder = msi_dup_property( package->db, primary_key )))
{
if (((primary_folder[0] >= 'A' && primary_folder[0] <=
'Z') ||
(primary_folder[0] >= 'a' && primary_folder[0] <=
'z')) && primary_folder[1] == ':')
{
- static const WCHAR fmtW[] = {'%','l','u',0};
ULARGE_INTEGER free;
ULONGLONG required;
WCHAR buf[21];
@@ -2504,16 +2297,28 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
primary_folder[2] = 0;
if (GetDiskFreeSpaceExW( primary_folder, &free, NULL, NULL ))
{
- swprintf( buf, ARRAY_SIZE(buf), fmtW, free.QuadPart / 512 );
- msi_set_property( package->db, szPrimaryVolumeSpaceAvailable, buf,
-1 );
+#ifdef __REACTOS__
+ swprintf(buf, ARRAY_SIZE(buf), L"%I64u", free.QuadPart /
512);
+#else
+ swprintf( buf, ARRAY_SIZE(buf), L"%lu", free.QuadPart / 512
);
+#endif
+ msi_set_property( package->db,
L"PrimaryVolumeSpaceAvailable", buf, -1 );
}
required = get_volume_space_required( package );
- swprintf( buf, ARRAY_SIZE(buf), fmtW, required / 512 );
- msi_set_property( package->db, szPrimaryVolumeSpaceRequired, buf, -1
);
+#ifdef __REACTOS__
+ swprintf( buf, ARRAY_SIZE(buf), L"%I64u", required / 512 );
+#else
+ swprintf( buf, ARRAY_SIZE(buf), L"%lu", required / 512 );
+#endif
+ msi_set_property( package->db,
L"PrimaryVolumeSpaceRequired", buf, -1 );
- swprintf( buf, ARRAY_SIZE(buf), fmtW, (free.QuadPart - required) / 512
);
- msi_set_property( package->db, szPrimaryVolumeSpaceRemaining, buf, -1
);
- msi_set_property( package->db, szPrimaryVolumePath, primary_folder, 2
);
+#ifdef __REACTOS__
+ swprintf( buf, ARRAY_SIZE(buf), L"%I64u", (free.QuadPart -
required) / 512 );
+#else
+ swprintf( buf, ARRAY_SIZE(buf), L"%lu", (free.QuadPart -
required) / 512 );
+#endif
+ msi_set_property( package->db,
L"PrimaryVolumeSpaceRemaining", buf, -1 );
+ msi_set_property( package->db, L"PrimaryVolumePath",
primary_folder, 2 );
}
msi_free( primary_folder );
}
@@ -2521,8 +2326,8 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
}
/* FIXME: check volume disk space */
- msi_set_property( package->db, szOutOfDiskSpace, szZero, -1 );
- msi_set_property( package->db, szOutOfNoRbDiskSpace, szZero, -1 );
+ msi_set_property( package->db, L"OutOfDiskSpace", L"0", -1 );
+ msi_set_property( package->db, L"OutOfNoRbDiskSpace", L"0", -1
);
return ERROR_SUCCESS;
}
@@ -2643,32 +2448,32 @@ static const WCHAR *get_root_key( MSIPACKAGE *package, INT root,
HKEY *root_key
switch (root)
{
case -1:
- if (msi_get_property_int( package->db, szAllUsers, 0 ))
+ if (msi_get_property_int( package->db, L"ALLUSERS", 0 ))
{
*root_key = HKEY_LOCAL_MACHINE;
- ret = szHLM;
+ ret = L"HKEY_LOCAL_MACHINE\\";
}
else
{
*root_key = HKEY_CURRENT_USER;
- ret = szHCU;
+ ret = L"HKEY_CURRENT_USER\\";
}
break;
case 0:
*root_key = HKEY_CLASSES_ROOT;
- ret = szHCR;
+ ret = L"HKEY_CLASSES_ROOT\\";
break;
case 1:
*root_key = HKEY_CURRENT_USER;
- ret = szHCU;
+ ret = L"HKEY_CURRENT_USER\\";
break;
case 2:
*root_key = HKEY_LOCAL_MACHINE;
- ret = szHLM;
+ ret = L"HKEY_LOCAL_MACHINE\\";
break;
case 3:
*root_key = HKEY_USERS;
- ret = szHU;
+ ret = L"HKEY_USERS\\";
break;
default:
ERR("Unknown root %i\n", root);
@@ -3000,16 +2805,13 @@ static UINT ITERATE_WriteRegistryValues(MSIRECORD *row, LPVOID
param)
static UINT ACTION_WriteRegistryValues(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','R','e','g','i','s','t','r','y','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szWriteRegistryValues);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"WriteRegistryValues");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `Registry`",
&view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -3232,19 +3034,13 @@ static UINT ITERATE_RemoveRegistryValuesOnInstall( MSIRECORD *row,
LPVOID param
static UINT ACTION_RemoveRegistryValues( MSIPACKAGE *package )
{
- static const WCHAR registry_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','R','e','g','i','s','t','r','y','`',0};
- static const WCHAR remove_registry_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','R','e','m','o','v','e','R','e','g','i','s','t','r','y','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRemoveRegistryValues);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"RemoveRegistryValues");
- rc = MSI_DatabaseOpenViewW( package->db, registry_query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Registry`",
&view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, NULL, ITERATE_RemoveRegistryValuesOnUninstall,
package );
@@ -3252,7 +3048,7 @@ static UINT ACTION_RemoveRegistryValues( MSIPACKAGE *package )
if (rc != ERROR_SUCCESS)
return rc;
}
- rc = MSI_DatabaseOpenViewW( package->db, remove_registry_query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`RemoveRegistry`", &view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, NULL, ITERATE_RemoveRegistryValuesOnInstall,
package );
@@ -3271,9 +3067,6 @@ static UINT ACTION_InstallInitialize(MSIPACKAGE *package)
static UINT ACTION_InstallValidate(MSIPACKAGE *package)
{
- static const WCHAR query[]= {
- 'S','E','L','E','C','T','
','*',' ', 'F','R','O','M','
',
-
'`','R','e','g','i','s','t','r','y','`',0};
MSICOMPONENT *comp;
DWORD total = 0, count = 0;
MSIQUERY *view;
@@ -3283,7 +3076,7 @@ static UINT ACTION_InstallValidate(MSIPACKAGE *package)
TRACE("InstallValidate\n");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Registry`",
&view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, &count, NULL, package );
@@ -3312,24 +3105,19 @@ static UINT ACTION_InstallValidate(MSIPACKAGE *package)
static UINT ITERATE_LaunchConditions(MSIRECORD *row, LPVOID param)
{
MSIPACKAGE* package = param;
- LPCWSTR cond = NULL;
- LPCWSTR message = NULL;
+ const WCHAR *cond, *message;
UINT r;
- static const WCHAR title[]=
-
{'I','n','s','t','a','l','l','
','F','a', 'i','l','e','d',0};
-
- cond = MSI_RecordGetString(row,1);
-
- r = MSI_EvaluateConditionW(package,cond);
+ cond = MSI_RecordGetString(row, 1);
+ r = MSI_EvaluateConditionW(package, cond);
if (r == MSICONDITION_FALSE)
{
if ((package->ui_level & INSTALLUILEVEL_MASK) != INSTALLUILEVEL_NONE)
{
- LPWSTR deformated;
- message = MSI_RecordGetString(row,2);
- deformat_string(package,message,&deformated);
- MessageBoxW(NULL,deformated,title,MB_OK);
+ WCHAR *deformated;
+ message = MSI_RecordGetString(row, 2);
+ deformat_string(package, message, &deformated);
+ MessageBoxW(NULL, deformated, L"Install Failed", MB_OK);
msi_free(deformated);
}
@@ -3341,15 +3129,12 @@ static UINT ITERATE_LaunchConditions(MSIRECORD *row, LPVOID
param)
static UINT ACTION_LaunchConditions(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','L','a','u','n','c','h','C','o','n','d','i','t','i','o','n','`',0};
MSIQUERY *view;
UINT rc;
TRACE("Checking launch conditions\n");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM
`LaunchCondition`", &view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -3366,18 +3151,12 @@ static LPWSTR resolve_keypath( MSIPACKAGE* package, MSICOMPONENT
*cmp )
if (cmp->Attributes & msidbComponentAttributesRegistryKeyPath)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','R','e','g','i','s','t','r','y','`','
','W','H','E','R','E',' ',
-
'`','R','e','g','i','s','t','r','y','`','
','=',' '
,'\'','%','s','\'',0};
- static const WCHAR fmt[] =
{'%','0','2','i',':','\\','%','s','\\',0};
- static const WCHAR fmt2[]=
{'%','0','2','i',':','\\','%','s','\\','%','s',0};
MSIRECORD *row;
UINT root, len;
LPWSTR deformated, buffer, deformated_name;
LPCWSTR key, name;
- row = MSI_QueryGetRecord(package->db, query, cmp->KeyPath);
+ row = MSI_QueryGetRecord(package->db, L"SELECT * FROM `Registry` WHERE
`Registry` = '%s'", cmp->KeyPath);
if (!row)
return NULL;
@@ -3394,9 +3173,9 @@ static LPWSTR resolve_keypath( MSIPACKAGE* package, MSICOMPONENT
*cmp )
buffer = msi_alloc( len *sizeof(WCHAR));
if (deformated_name)
- swprintf(buffer,len,fmt2,root,deformated,deformated_name);
+ swprintf(buffer, len, L"%02d:\\%s\\%s", root, deformated,
deformated_name);
else
- swprintf(buffer,len,fmt,root,deformated);
+ swprintf(buffer, len, L"%02d:\\%s\\", root, deformated);
msi_free(deformated);
msi_free(deformated_name);
@@ -3421,11 +3200,8 @@ static LPWSTR resolve_keypath( MSIPACKAGE* package, MSICOMPONENT
*cmp )
static HKEY open_shared_dlls_key( MSICOMPONENT *comp, BOOL create, REGSAM access )
{
- static const WCHAR path[] =
-
{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',
-
'W','i','n','d','o','w','s','\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
-
'S','h','a','r','e','d','D','L','L','s',0};
- return open_key( comp, HKEY_LOCAL_MACHINE, path, create, access );
+ return open_key( comp, HKEY_LOCAL_MACHINE,
L"Software\\Microsoft\\Windows\\CurrentVersion\\SharedDLLs",
+ create, access );
}
static UINT get_shared_dlls_count( MSICOMPONENT *comp )
@@ -3521,13 +3297,12 @@ static WCHAR *build_full_keypath( MSIPACKAGE *package,
MSICOMPONENT *comp )
{
if (comp->assembly)
{
- static const WCHAR prefixW[] = {'<','\\',0};
- DWORD len = lstrlenW( prefixW ) + lstrlenW( comp->assembly->display_name
);
+ DWORD len = lstrlenW( L"<\\" ) + lstrlenW(
comp->assembly->display_name );
WCHAR *keypath = msi_alloc( (len + 1) * sizeof(WCHAR) );
if (keypath)
{
- lstrcpyW( keypath, prefixW );
+ lstrcpyW( keypath, L"<\\" );
lstrcatW( keypath, comp->assembly->display_name );
}
return keypath;
@@ -3547,7 +3322,7 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
msi_set_sourcedir_props(package, FALSE);
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szProcessComponents);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"ProcessComponents");
squash_guid( package->ProductCode, squashed_pc );
@@ -3576,7 +3351,7 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
if (action == INSTALLSTATE_LOCAL || action == INSTALLSTATE_SOURCE)
{
if (package->Context == MSIINSTALLCONTEXT_MACHINE)
- rc = MSIREG_OpenUserDataComponentKey(comp->ComponentId, szLocalSid,
&hkey, TRUE);
+ rc = MSIREG_OpenUserDataComponentKey(comp->ComponentId,
L"S-1-5-18", &hkey, TRUE);
else
rc = MSIREG_OpenUserDataComponentKey(comp->ComponentId, NULL,
&hkey, TRUE);
@@ -3585,12 +3360,7 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
if (comp->Attributes & msidbComponentAttributesPermanent)
{
- static const WCHAR szPermKey[] =
- {
'0','0','0','0','0','0','0','0','0','0','0','0',
-
'0','0','0','0','0','0','0','0','0','0','0','0',
-
'0','0','0','0','0','0','0','0',0
};
-
- msi_reg_set_val_str(hkey, szPermKey, comp->FullKeypath);
+ msi_reg_set_val_str(hkey, L"00000000000000000000000000000000",
comp->FullKeypath);
}
if (action == INSTALLSTATE_LOCAL)
msi_reg_set_val_str( hkey, squashed_pc, comp->FullKeypath );
@@ -3603,21 +3373,14 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
WCHAR base[MAX_PATH];
LPWSTR sourcepath;
- static const WCHAR fmt[] =
{'%','0','2','d','\\',0};
- static const WCHAR query[] = {
-
'S','E','L','E','C','T','
','*',' ', 'F','R','O','M','
',
-
'`','M','e','d','i','a','`','
','W','H','E','R','E',' ',
-
'`','L','a','s','t','S','e','q','u','e','n','c','e','`','
',
- '>','=',' ','%','i','
','O','R','D','E','R','
','B','Y',' ',
-
'`','D','i','s','k','I','d','`',0};
-
if (!comp->KeyPath || !(file = msi_get_loaded_file(package,
comp->KeyPath)))
continue;
- if (!(row = MSI_QueryGetRecord(package->db, query,
file->Sequence)))
+ if (!(row = MSI_QueryGetRecord(package->db, L"SELECT * FROM
`Media` WHERE `LastSequence` >= %d "
+ L"ORDER BY
`DiskId`", file->Sequence)))
return ERROR_FUNCTION_FAILED;
- swprintf(source, ARRAY_SIZE(source), fmt, MSI_RecordGetInteger(row, 1));
+ swprintf(source, ARRAY_SIZE(source), L"%02d\\",
MSI_RecordGetInteger(row, 1));
ptr2 = wcsrchr(source, '\\') + 1;
msiobj_release(&row->hdr);
@@ -3639,7 +3402,7 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
if (comp->num_clients <= 0)
{
if (package->Context == MSIINSTALLCONTEXT_MACHINE)
- rc = MSIREG_DeleteUserDataComponentKey( comp->ComponentId,
szLocalSid );
+ rc = MSIREG_DeleteUserDataComponentKey( comp->ComponentId,
L"S-1-5-18" );
else
rc = MSIREG_DeleteUserDataComponentKey( comp->ComponentId, NULL
);
@@ -3650,7 +3413,7 @@ static UINT ACTION_ProcessComponents(MSIPACKAGE *package)
LONG res;
if (package->Context == MSIINSTALLCONTEXT_MACHINE)
- rc = MSIREG_OpenUserDataComponentKey( comp->ComponentId,
szLocalSid, &hkey, FALSE );
+ rc = MSIREG_OpenUserDataComponentKey( comp->ComponentId,
L"S-1-5-18", &hkey, FALSE );
else
rc = MSIREG_OpenUserDataComponentKey( comp->ComponentId, NULL,
&hkey, FALSE );
@@ -3689,8 +3452,7 @@ static BOOL CALLBACK Typelib_EnumResNameProc( HMODULE hModule,
LPCWSTR lpszType,
{
TLIBATTR *attr;
typelib_struct *tl_struct = (typelib_struct*) lParam;
- static const WCHAR fmt[] =
{'%','s','\\','%','i',0};
- int sz;
+ int sz;
HRESULT res;
if (!IS_INTRESOURCE(lpszName))
@@ -3706,7 +3468,11 @@ static BOOL CALLBACK Typelib_EnumResNameProc( HMODULE hModule,
LPCWSTR lpszType,
else
{
tl_struct->path = msi_alloc(sz * sizeof(WCHAR));
- swprintf(tl_struct->path,sz,fmt,tl_struct->source, lpszName);
+#ifdef __REACTOS__
+ swprintf(tl_struct->path, sz, L"%s\\%d", tl_struct->source,
(WORD)(INT_PTR)lpszName);
+#else
+ swprintf(tl_struct->path, sz, L"%s\\%d", tl_struct->source,
lpszName);
+#endif
}
TRACE("trying %s\n", debugstr_w(tl_struct->path));
@@ -3792,7 +3558,7 @@ static UINT ITERATE_RegisterTypeLibraries(MSIRECORD *row, LPVOID
param)
tl_struct.source = strdupW( file->TargetPath );
tl_struct.path = NULL;
- EnumResourceNamesW(module, szTYPELIB, Typelib_EnumResNameProc,
+ EnumResourceNamesW(module, L"TYPELIB", Typelib_EnumResNameProc,
(LONG_PTR)&tl_struct);
if (tl_struct.path)
@@ -3835,16 +3601,13 @@ static UINT ITERATE_RegisterTypeLibraries(MSIRECORD *row, LPVOID
param)
static UINT ACTION_RegisterTypeLibraries(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','T','y','p','e','L','i','b','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRegisterTypeLibraries);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"RegisterTypeLibraries");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `TypeLib`",
&view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -3899,16 +3662,13 @@ static UINT ITERATE_UnregisterTypeLibraries( MSIRECORD *row,
LPVOID param )
static UINT ACTION_UnregisterTypeLibraries( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','T','y','p','e','L','i','b','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szUnregisterTypeLibraries);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"UnregisterTypeLibraries");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `TypeLib`",
&view );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -3919,7 +3679,6 @@ static UINT ACTION_UnregisterTypeLibraries( MSIPACKAGE *package )
static WCHAR *get_link_file( MSIPACKAGE *package, MSIRECORD *row )
{
- static const WCHAR szlnk[] = {'.','l','n','k',0};
LPCWSTR directory, extension, link_folder;
LPWSTR link_file, filename;
@@ -3937,11 +3696,11 @@ static WCHAR *get_link_file( MSIPACKAGE *package, MSIRECORD *row
)
msi_reduce_to_long_filename( filename );
extension = wcsrchr( filename, '.' );
- if (!extension || wcsicmp( extension, szlnk ))
+ if (!extension || wcsicmp( extension, L".lnk" ))
{
int len = lstrlenW( filename );
- filename = msi_realloc( filename, len * sizeof(WCHAR) + sizeof(szlnk) );
- memcpy( filename + len, szlnk, sizeof(szlnk) );
+ filename = msi_realloc( filename, len * sizeof(WCHAR) + sizeof(L".lnk")
);
+ memcpy( filename + len, L".lnk", sizeof(L".lnk") );
}
link_file = msi_build_directory_name( 2, link_folder, filename );
msi_free( filename );
@@ -3951,19 +3710,17 @@ static WCHAR *get_link_file( MSIPACKAGE *package, MSIRECORD *row
)
WCHAR *msi_build_icon_path( MSIPACKAGE *package, const WCHAR *icon_name )
{
- static const WCHAR szMicrosoft[] =
{'M','i','c','r','o','s','o','f','t','\\',0};
- static const WCHAR szInstaller[] =
{'I','n','s','t','a','l','l','e','r','\\',0};
WCHAR *folder, *dest, *path;
if (package->Context == MSIINSTALLCONTEXT_MACHINE)
- folder = msi_dup_property( package->db, szWindowsFolder );
+ folder = msi_dup_property( package->db, L"WindowsFolder" );
else
{
- WCHAR *appdata = msi_dup_property( package->db, szAppDataFolder );
- folder = msi_build_directory_name( 2, appdata, szMicrosoft );
+ WCHAR *appdata = msi_dup_property( package->db, L"AppDataFolder" );
+ folder = msi_build_directory_name( 2, appdata, L"Microsoft\\" );
msi_free( appdata );
}
- dest = msi_build_directory_name( 3, folder, szInstaller, package->ProductCode );
+ dest = msi_build_directory_name( 3, folder, L"Installer\\",
package->ProductCode );
msi_create_full_path( package, dest );
path = msi_build_directory_name( 2, dest, icon_name );
msi_free( folder );
@@ -4089,17 +3846,14 @@ err:
static UINT ACTION_CreateShortcuts(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','S','h','o','r','t','c','u','t','`',0};
MSIQUERY *view;
HRESULT res;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szCreateShortcuts);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"CreateShortcuts");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `Shortcut`",
&view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -4142,16 +3896,13 @@ static UINT ITERATE_RemoveShortcuts( MSIRECORD *row, LPVOID param
)
static UINT ACTION_RemoveShortcuts( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','S','h','o','r','t','c','u','t','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRemoveShortcuts);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"RemoveShortcuts");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Shortcut`",
&view );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -4211,13 +3962,10 @@ static UINT ITERATE_PublishIcon(MSIRECORD *row, LPVOID param)
static UINT msi_publish_icons(MSIPACKAGE *package)
{
- static const WCHAR query[]= {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
- '`','I','c','o','n','`',0};
MSIQUERY *view;
UINT r;
- r = MSI_DatabaseOpenViewW(package->db, query, &view);
+ r = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `Icon`",
&view);
if (r == ERROR_SUCCESS)
{
r = MSI_IterateRecords(view, NULL, ITERATE_PublishIcon, package);
@@ -4236,7 +3984,7 @@ static UINT msi_publish_sourcelist(MSIPACKAGE *package, HKEY hkey)
MSIMEDIADISK *disk;
MSISOURCELISTINFO *info;
- r = RegCreateKeyW(hkey, szSourceList, &source);
+ r = RegCreateKeyW(hkey, L"SourceList", &source);
if (r != ERROR_SUCCESS)
return r;
@@ -4251,13 +3999,13 @@ static UINT msi_publish_sourcelist(MSIPACKAGE *package, HKEY
hkey)
r = MsiSourceListSetInfoW(package->ProductCode, NULL,
package->Context, MSICODE_PRODUCT,
- INSTALLPROPERTY_MEDIAPACKAGEPATHW, szEmpty);
+ INSTALLPROPERTY_MEDIAPACKAGEPATHW, L"");
if (r != ERROR_SUCCESS)
return r;
r = MsiSourceListSetInfoW(package->ProductCode, NULL,
package->Context, MSICODE_PRODUCT,
- INSTALLPROPERTY_DISKPROMPTW, szEmpty);
+ INSTALLPROPERTY_DISKPROMPTW, L"");
if (r != ERROR_SUCCESS)
return r;
@@ -4284,15 +4032,6 @@ static UINT msi_publish_sourcelist(MSIPACKAGE *package, HKEY hkey)
static UINT msi_publish_product_properties(MSIPACKAGE *package, HKEY hkey)
{
- static const WCHAR szARPProductIcon[] =
-
{'A','R','P','P','R','O','D','U','C','T','I','C','O','N',0};
- static const WCHAR szAssignment[] =
-
{'A','s','s','i','g','n','m','e','n','t',0};
- static const WCHAR szAdvertiseFlags[] =
-
{'A','d','v','e','r','t','i','s','e','F','l','a','g','s',0};
- static const WCHAR szClients[] =
-
{'C','l','i','e','n','t','s',0};
- static const WCHAR szColon[] = {':',0};
WCHAR *buffer, *ptr, *guids, packcode[SQUASHED_GUID_SIZE];
DWORD langid;
@@ -4300,13 +4039,13 @@ static UINT msi_publish_product_properties(MSIPACKAGE *package,
HKEY hkey)
msi_reg_set_val_str(hkey, INSTALLPROPERTY_PRODUCTNAMEW, buffer);
msi_free(buffer);
- langid = msi_get_property_int(package->db, szProductLanguage, 0);
+ langid = msi_get_property_int(package->db, L"ProductLanguage", 0);
msi_reg_set_val_dword(hkey, INSTALLPROPERTY_LANGUAGEW, langid);
/* FIXME */
msi_reg_set_val_dword(hkey, INSTALLPROPERTY_AUTHORIZED_LUA_APPW, 0);
- buffer = msi_dup_property(package->db, szARPProductIcon);
+ buffer = msi_dup_property(package->db, L"ARPPRODUCTICON");
if (buffer)
{
LPWSTR path = msi_build_icon_path(package, buffer);
@@ -4315,7 +4054,7 @@ static UINT msi_publish_product_properties(MSIPACKAGE *package, HKEY
hkey)
msi_free(buffer);
}
- buffer = msi_dup_property(package->db, szProductVersion);
+ buffer = msi_dup_property(package->db, L"ProductVersion");
if (buffer)
{
DWORD verdword = msi_version_str_to_dword(buffer);
@@ -4323,10 +4062,10 @@ static UINT msi_publish_product_properties(MSIPACKAGE *package,
HKEY hkey)
msi_free(buffer);
}
- msi_reg_set_val_dword(hkey, szAssignment, 0);
- msi_reg_set_val_dword(hkey, szAdvertiseFlags, 0x184);
+ msi_reg_set_val_dword(hkey, L"Assignment", 0);
+ msi_reg_set_val_dword(hkey, L"AdvertiseFlags", 0x184);
msi_reg_set_val_dword(hkey, INSTALLPROPERTY_INSTANCETYPEW, 0);
- msi_reg_set_val_str(hkey, szClients, szColon);
+ msi_reg_set_val_str(hkey, L"Clients", L":");
if (!(guids = msi_get_package_code(package->db))) return ERROR_OUTOFMEMORY;
if ((ptr = wcschr(guids, ';'))) *ptr = 0;
@@ -4343,7 +4082,7 @@ static UINT msi_publish_upgrade_code(MSIPACKAGE *package)
HKEY hkey;
WCHAR *upgrade, squashed_pc[SQUASHED_GUID_SIZE];
- upgrade = msi_dup_property(package->db, szUpgradeCode);
+ upgrade = msi_dup_property(package->db, L"UpgradeCode");
if (!upgrade)
return ERROR_SUCCESS;
@@ -4395,7 +4134,6 @@ static BOOL msi_check_unpublish(MSIPACKAGE *package)
static UINT msi_publish_patches( MSIPACKAGE *package )
{
- static const WCHAR szAllPatches[] =
{'A','l','l','P','a','t','c','h','e','s',0};
WCHAR patch_squashed[GUID_SIZE];
HKEY patches_key = NULL, product_patches_key = NULL, product_key;
LONG res;
@@ -4408,7 +4146,7 @@ static UINT msi_publish_patches( MSIPACKAGE *package )
if (r != ERROR_SUCCESS)
return ERROR_FUNCTION_FAILED;
- res = RegCreateKeyExW( product_key, szPatches, 0, NULL, 0, KEY_ALL_ACCESS, NULL,
&patches_key, NULL );
+ res = RegCreateKeyExW( product_key, L"Patches", 0, NULL, 0, KEY_ALL_ACCESS,
NULL, &patches_key, NULL );
if (res != ERROR_SUCCESS)
{
r = ERROR_FUNCTION_FAILED;
@@ -4446,7 +4184,7 @@ static UINT msi_publish_patches( MSIPACKAGE *package )
if (r != ERROR_SUCCESS)
goto done;
- res = RegSetValueExW( patch_key, szLocalPackage, 0, REG_SZ, (const BYTE
*)patch->localfile,
+ res = RegSetValueExW( patch_key, L"LocalPackage", 0, REG_SZ, (const
BYTE *)patch->localfile,
(lstrlenW( patch->localfile ) + 1) * sizeof(WCHAR) );
RegCloseKey( patch_key );
if (res != ERROR_SUCCESS)
@@ -4462,7 +4200,7 @@ static UINT msi_publish_patches( MSIPACKAGE *package )
if (res != ERROR_SUCCESS)
goto done;
- res = RegSetValueExW( patch_key, szState, 0, REG_DWORD, (const BYTE
*)&patch->state,
+ res = RegSetValueExW( patch_key, L"State", 0, REG_DWORD, (const BYTE
*)&patch->state,
sizeof(patch->state) );
if (res != ERROR_SUCCESS)
{
@@ -4470,7 +4208,7 @@ static UINT msi_publish_patches( MSIPACKAGE *package )
goto done;
}
- res = RegSetValueExW( patch_key, szUninstallable, 0, REG_DWORD, (const BYTE
*)&patch->uninstallable,
+ res = RegSetValueExW( patch_key, L"Uninstallable", 0, REG_DWORD, (const
BYTE *)&patch->uninstallable,
sizeof(patch->uninstallable) );
RegCloseKey( patch_key );
if (res != ERROR_SUCCESS)
@@ -4478,12 +4216,12 @@ static UINT msi_publish_patches( MSIPACKAGE *package )
}
all_patches[len] = 0;
- res = RegSetValueExW( patches_key, szPatches, 0, REG_MULTI_SZ,
+ res = RegSetValueExW( patches_key, L"Patches", 0, REG_MULTI_SZ,
(const BYTE *)all_patches, (len + 1) * sizeof(WCHAR) );
if (res != ERROR_SUCCESS)
goto done;
- res = RegSetValueExW( product_patches_key, szAllPatches, 0, REG_MULTI_SZ,
+ res = RegSetValueExW( product_patches_key, L"AllPatches", 0, REG_MULTI_SZ,
(const BYTE *)all_patches, (len + 1) * sizeof(WCHAR) );
if (res != ERROR_SUCCESS)
r = ERROR_FUNCTION_FAILED;
@@ -4504,7 +4242,7 @@ static UINT ACTION_PublishProduct(MSIPACKAGE *package)
BOOL republish = FALSE;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szPublishProduct);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"PublishProduct");
if (!list_empty(&package->patches))
{
@@ -4605,7 +4343,7 @@ static WCHAR *get_ini_file_name( MSIPACKAGE *package, MSIRECORD *row
)
if (!folder) folder = msi_dup_property( package->db, dirprop );
}
else
- folder = msi_dup_property( package->db, szWindowsFolder );
+ folder = msi_dup_property( package->db, L"WindowsFolder" );
if (!folder)
{
@@ -4697,16 +4435,13 @@ static UINT ITERATE_WriteIniValues(MSIRECORD *row, LPVOID param)
static UINT ACTION_WriteIniValues(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','I','n','i','F','i','l','e','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szWriteIniValues);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"WriteIniValues");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `IniFile`",
&view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -4840,19 +4575,13 @@ static UINT ITERATE_RemoveIniValuesOnInstall( MSIRECORD *row,
LPVOID param )
static UINT ACTION_RemoveIniValues( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','I','n','i','F','i','l','e','`',0};
- static const WCHAR remove_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','R','e','m','o','v','e','I','n','i','F','i','l','e','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRemoveIniValues);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"RemoveIniValues");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `IniFile`",
&view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, NULL, ITERATE_RemoveIniValuesOnUninstall, package
);
@@ -4860,7 +4589,7 @@ static UINT ACTION_RemoveIniValues( MSIPACKAGE *package )
if (rc != ERROR_SUCCESS)
return rc;
}
- rc = MSI_DatabaseOpenViewW( package->db, remove_query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`RemoveIniFile`", &view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, NULL, ITERATE_RemoveIniValuesOnInstall, package
);
@@ -4874,15 +4603,11 @@ static UINT ACTION_RemoveIniValues( MSIPACKAGE *package )
static void register_dll( const WCHAR *dll, BOOL unregister )
{
#ifdef __REACTOS__
- static const WCHAR regW[] =
-
{'r','e','g','s','v','r','3','2','.','e','x','e','
','/','s','
','\"','%','s','\"',0};
- static const WCHAR unregW[] =
-
{'r','e','g','s','v','r','3','2','.','e','x','e','
','/','s',' ','/','u','
','\"','%','s','\"',0};
+ static const WCHAR regW[] = L"regsvr32.exe /s \"%s\"";
+ static const WCHAR unregW[] = L"regsvr32.exe /s /u \"%s\"";
#else /* __REACTOS__ */
- static const WCHAR regW[] =
-
{'r','e','g','s','v','r','3','2','.','e','x','e','
','\"','%','s','\"',0};
- static const WCHAR unregW[] =
-
{'r','e','g','s','v','r','3','2','.','e','x','e','
','/','u','
','\"','%','s','\"',0};
+ static const WCHAR regW[] = L"regsvr32.exe \"%s\"";
+ static const WCHAR unregW[] = L"regsvr32.exe /u \"%s\"";
#endif /* __REACTOS__ */
PROCESS_INFORMATION pi;
STARTUPINFOW si;
@@ -4938,16 +4663,13 @@ static UINT ITERATE_SelfRegModules(MSIRECORD *row, LPVOID param)
static UINT ACTION_SelfRegModules(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','S','e','l','f','R','e','g','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szSelfRegModules);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"SelfRegModules");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `SelfReg`",
&view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -4991,16 +4713,13 @@ static UINT ITERATE_SelfUnregModules( MSIRECORD *row, LPVOID param
)
static UINT ACTION_SelfUnregModules( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','S','e','l','f','R','e','g','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szSelfUnregModules);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"SelfUnregModules");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `SelfReg`",
&view );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -5016,7 +4735,7 @@ static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
HKEY hkey = NULL, userdata = NULL;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szPublishFeatures);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"PublishFeatures");
if (!msi_check_publish(package))
return ERROR_SUCCESS;
@@ -5078,9 +4797,8 @@ static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
if (feature->Feature_Parent)
{
- static const WCHAR sep[] = {'\2',0};
- lstrcatW(data,sep);
- lstrcatW(data,feature->Feature_Parent);
+ lstrcatW(data, L"\2");
+ lstrcatW(data, feature->Feature_Parent);
}
msi_reg_set_val_str( userdata, feature->Feature, data );
@@ -5092,8 +4810,8 @@ static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
if (!absent)
{
size += sizeof(WCHAR);
- RegSetValueExW(hkey,feature->Feature,0,REG_SZ,
- (const BYTE*)(feature->Feature_Parent ?
feature->Feature_Parent : szEmpty),size);
+ RegSetValueExW(hkey, feature->Feature, 0 ,REG_SZ,
+ (const BYTE*)(feature->Feature_Parent ?
feature->Feature_Parent : L""), size);
}
else
{
@@ -5159,7 +4877,7 @@ static UINT ACTION_UnpublishFeatures(MSIPACKAGE *package)
MSIFEATURE *feature;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szUnpublishFeatures);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"UnpublishFeatures");
if (!msi_check_unpublish(package))
return ERROR_SUCCESS;
@@ -5174,91 +4892,21 @@ static UINT ACTION_UnpublishFeatures(MSIPACKAGE *package)
static UINT msi_publish_install_properties(MSIPACKAGE *package, HKEY hkey)
{
- static const WCHAR date_fmt[] =
-
{'%','i','%','0','2','i','%','0','2','i',0};
- static const WCHAR szEstimatedSize[] =
-
{'E','s','t','i','m','a','t','e','d','S','i','z','e',0};
- static const WCHAR szDisplayVersion[] =
-
{'D','i','s','p','l','a','y','V','e','r','s','i','o','n',0};
- static const WCHAR szInstallSource[] =
-
{'I','n','s','t','a','l','l','S','o','u','r','c','e',0};
- static const WCHAR szARPAUTHORIZEDCDFPREFIX[] =
-
{'A','R','P','A','U','T','H','O','R','I','Z','E','D','C','D','F','P','R','E','F','I','X',0};
- static const WCHAR szAuthorizedCDFPrefix[] =
-
{'A','u','t','h','o','r','i','z','e','d','C','D','F','P','r','e','f','i','x',0};
- static const WCHAR szARPCONTACT[] =
-
{'A','R','P','C','O','N','T','A','C','T',0};
- static const WCHAR szContact[] =
-
{'C','o','n','t','a','c','t',0};
- static const WCHAR szARPCOMMENTS[] =
-
{'A','R','P','C','O','M','M','E','N','T','S',0};
- static const WCHAR szComments[] =
-
{'C','o','m','m','e','n','t','s',0};
- static const WCHAR szProductName[] =
-
{'P','r','o','d','u','c','t','N','a','m','e',0};
- static const WCHAR szDisplayName[] =
-
{'D','i','s','p','l','a','y','N','a','m','e',0};
- static const WCHAR szARPHELPLINK[] =
-
{'A','R','P','H','E','L','P','L','I','N','K',0};
- static const WCHAR szHelpLink[] =
-
{'H','e','l','p','L','i','n','k',0};
- static const WCHAR szARPHELPTELEPHONE[] =
-
{'A','R','P','H','E','L','P','T','E','L','E','P','H','O','N','E',0};
- static const WCHAR szHelpTelephone[] =
-
{'H','e','l','p','T','e','l','e','p','h','o','n','e',0};
- static const WCHAR szARPINSTALLLOCATION[] =
-
{'A','R','P','I','N','S','T','A','L','L','L','O','C','A','T','I','O','N',0};
- static const WCHAR szManufacturer[] =
-
{'M','a','n','u','f','a','c','t','u','r','e','r',0};
- static const WCHAR szPublisher[] =
-
{'P','u','b','l','i','s','h','e','r',0};
- static const WCHAR szARPREADME[] =
-
{'A','R','P','R','E','A','D','M','E',0};
- static const WCHAR szReadme[] =
- {'R','e','a','d','M','e',0};
- static const WCHAR szARPSIZE[] =
-
{'A','R','P','S','I','Z','E',0};
- static const WCHAR szSize[] =
- {'S','i','z','e',0};
- static const WCHAR szARPURLINFOABOUT[] =
-
{'A','R','P','U','R','L','I','N','F','O','A','B','O','U','T',0};
- static const WCHAR szURLInfoAbout[] =
-
{'U','R','L','I','n','f','o','A','b','o','u','t',0};
- static const WCHAR szARPURLUPDATEINFO[] =
-
{'A','R','P','U','R','L','U','P','D','A','T','E','I','N','F','O',0};
- static const WCHAR szURLUpdateInfo[] =
-
{'U','R','L','U','p','d','a','t','e','I','n','f','o',0};
- static const WCHAR szARPSYSTEMCOMPONENT[] =
-
{'A','R','P','S','Y','S','T','E','M','C','O','M','P','O','N','E','N','T',0};
- static const WCHAR szSystemComponent[] =
-
{'S','y','s','t','e','m','C','o','m','p','o','n','e','n','t',0};
- static const WCHAR szARPNOMODIFY[] =
-
{'A','R','P','N','O','M','O','D','I','F','Y',0};
- static const WCHAR szNoModify[] =
-
{'N','o','M','o','d','i','f','y',0};
- static const WCHAR szARPNOREMOVE[] =
-
{'A','R','P','N','O','R','E','M','O','V','E',0};
- static const WCHAR szNoRemove[] =
-
{'N','o','R','e','m','o','v','e',0};
- static const WCHAR szARPNOREPAIR[] =
-
{'A','R','P','N','O','R','E','P','A','I','R',0};
- static const WCHAR szNoRepair[] =
-
{'N','o','R','e','p','a','i','r',0};
-
- static const WCHAR *propval[] = {
- szARPAUTHORIZEDCDFPREFIX, szAuthorizedCDFPrefix,
- szARPCONTACT, szContact,
- szARPCOMMENTS, szComments,
- szProductName, szDisplayName,
- szARPHELPLINK, szHelpLink,
- szARPHELPTELEPHONE, szHelpTelephone,
- szARPINSTALLLOCATION, szInstallLocation,
- szSourceDir, szInstallSource,
- szManufacturer, szPublisher,
- szARPREADME, szReadme,
- szARPSIZE, szSize,
- szARPURLINFOABOUT, szURLInfoAbout,
- szARPURLUPDATEINFO, szURLUpdateInfo,
+ static const WCHAR *propval[] =
+ {
+ L"ARPAUTHORIZEDCDFPREFIX", L"AuthorizedCDFPrefix",
+ L"ARPCONTACT", L"Contact",
+ L"ARPCOMMENTS", L"Comments",
+ L"ProductName", L"DisplayName",
+ L"ARPHELPLINK", L"HelpLink",
+ L"ARPHELPTELEPHONE", L"HelpTelephone",
+ L"ARPINSTALLLOCATION", L"InstallLocation",
+ L"SourceDir", L"InstallSource",
+ L"Manufacturer", L"Publisher",
+ L"ARPREADME", L"ReadMe",
+ L"ARPSIZE", L"Size",
+ L"ARPURLINFOABOUT", L"URLInfoAbout",
+ L"ARPURLUPDATEINFO", L"URLUpdateInfo",
NULL
};
const WCHAR **p = propval;
@@ -5276,55 +4924,47 @@ static UINT msi_publish_install_properties(MSIPACKAGE *package,
HKEY hkey)
msi_free(val);
}
- msi_reg_set_val_dword(hkey, szWindowsInstaller, 1);
- if (msi_get_property_int( package->db, szARPSYSTEMCOMPONENT, 0 ))
+ msi_reg_set_val_dword(hkey, L"WindowsInstaller", 1);
+ if (msi_get_property_int( package->db, L"ARPSYSTEMCOMPONENT", 0 ))
{
- msi_reg_set_val_dword( hkey, szSystemComponent, 1 );
+ msi_reg_set_val_dword( hkey, L"SystemComponent", 1 );
}
- if (msi_get_property_int( package->db, szARPNOREMOVE, 0 ))
- msi_reg_set_val_dword( hkey, szNoRemove, 1 );
+ if (msi_get_property_int( package->db, L"ARPNOREMOVE", 0 ))
+ msi_reg_set_val_dword( hkey, L"NoRemove", 1 );
else
{
- static const WCHAR fmt_install[] =
-
{'M','s','i','E','x','e','c','.','e','x','e','
',
-
'/','I','[','P','r','o','d','u','c','t','C','o','d','e',']',0};
- static const WCHAR fmt_uninstall[] =
-
{'M','s','i','E','x','e','c','.','e','x','e','
',
-
'/','X','[','P','r','o','d','u','c','t','C','o','d','e',']',0};
- static const WCHAR szModifyPath[] =
-
{'M','o','d','i','f','y','P','a','t','h',0};
- static const WCHAR szUninstallString[] =
-
{'U','n','i','n','s','t','a','l','l','S','t','r','i','n','g',0};
+ static const WCHAR fmt_install[] = L"MsiExec.exe /I[ProductCode]";
+ static const WCHAR fmt_uninstall[] = L"MsiExec.exe /X[ProductCode]";
const WCHAR *fmt = fmt_install;
- if (msi_get_property_int( package->db, szARPNOREPAIR, 0 ))
- msi_reg_set_val_dword( hkey, szNoRepair, 1 );
+ if (msi_get_property_int( package->db, L"ARPNOREPAIR", 0 ))
+ msi_reg_set_val_dword( hkey, L"NoRepair", 1 );
- if (msi_get_property_int( package->db, szARPNOMODIFY, 0 ))
+ if (msi_get_property_int( package->db, L"ARPNOMODIFY", 0 ))
{
- msi_reg_set_val_dword( hkey, szNoModify, 1 );
+ msi_reg_set_val_dword( hkey, L"NoModify", 1 );
fmt = fmt_uninstall;
}
size = deformat_string(package, fmt, &buffer) * sizeof(WCHAR);
- RegSetValueExW(hkey, szModifyPath, 0, REG_EXPAND_SZ, (LPBYTE)buffer, size);
- RegSetValueExW(hkey, szUninstallString, 0, REG_EXPAND_SZ, (LPBYTE)buffer, size);
+ RegSetValueExW(hkey, L"ModifyPath", 0, REG_EXPAND_SZ, (LPBYTE)buffer,
size);
+ RegSetValueExW(hkey, L"UninstallString", 0, REG_EXPAND_SZ,
(LPBYTE)buffer, size);
msi_free(buffer);
}
/* FIXME: Write real Estimated Size when we have it */
- msi_reg_set_val_dword(hkey, szEstimatedSize, 0);
+ msi_reg_set_val_dword(hkey, L"EstimatedSize", 0);
GetLocalTime(&systime);
- swprintf(date, ARRAY_SIZE(date), date_fmt, systime.wYear, systime.wMonth,
systime.wDay);
+ swprintf(date, ARRAY_SIZE(date), L"%d%02d%02d", systime.wYear,
systime.wMonth, systime.wDay);
msi_reg_set_val_str(hkey, INSTALLPROPERTY_INSTALLDATEW, date);
- langid = msi_get_property_int(package->db, szProductLanguage, 0);
+ langid = msi_get_property_int(package->db, L"ProductLanguage", 0);
msi_reg_set_val_dword(hkey, INSTALLPROPERTY_LANGUAGEW, langid);
- buffer = msi_dup_property(package->db, szProductVersion);
- msi_reg_set_val_str(hkey, szDisplayVersion, buffer);
+ buffer = msi_dup_property(package->db, L"ProductVersion");
+ msi_reg_set_val_str(hkey, L"DisplayVersion", buffer);
if (buffer)
{
DWORD verdword = msi_version_str_to_dword(buffer);
@@ -5346,10 +4986,10 @@ static UINT ACTION_RegisterProduct(MSIPACKAGE *package)
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRegisterProduct);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"RegisterProduct");
/* FIXME: also need to publish if the product is in advertise mode */
- if (!msi_get_property_int( package->db, szProductToBeRegistered, 0 )
+ if (!msi_get_property_int( package->db, L"ProductToBeRegistered", 0 )
&& !msi_check_publish(package))
return ERROR_SUCCESS;
@@ -5369,7 +5009,7 @@ static UINT ACTION_RegisterProduct(MSIPACKAGE *package)
if (rc != ERROR_SUCCESS)
goto done;
- upgrade_code = msi_dup_property(package->db, szUpgradeCode);
+ upgrade_code = msi_dup_property(package->db, L"UpgradeCode");
if (upgrade_code)
{
rc = MSIREG_OpenUpgradeCodesKey( upgrade_code, &upgrade_key, TRUE );
@@ -5422,12 +5062,10 @@ static UINT ITERATE_UnpublishIcon( MSIRECORD *row, LPVOID param )
static UINT msi_unpublish_icons( MSIPACKAGE *package )
{
- static const WCHAR query[]= {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
','`','I','c','o','n','`',0};
MSIQUERY *view;
UINT r;
- r = MSI_DatabaseOpenViewW( package->db, query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Icon`",
&view );
if (r == ERROR_SUCCESS)
{
r = MSI_IterateRecords( view, NULL, ITERATE_UnpublishIcon, package );
@@ -5446,7 +5084,7 @@ static void remove_product_upgrade_code( MSIPACKAGE *package )
DWORD count;
squash_guid( package->ProductCode, product );
- if (!(code = msi_dup_property( package->db, szUpgradeCode )))
+ if (!(code = msi_dup_property( package->db, L"UpgradeCode" )))
{
WARN( "upgrade code not found\n" );
return;
@@ -5544,44 +5182,24 @@ static UINT ACTION_InstallFinalize(MSIPACKAGE *package)
UINT ACTION_ForceReboot(MSIPACKAGE *package)
{
- static const WCHAR RunOnce[] = {
-
'S','o','f','t','w','a','r','e','\\',
-
'M','i','c','r','o','s','o','f','t','\\',
-
'W','i','n','d','o','w','s','\\',
-
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
-
'R','u','n','O','n','c','e',0};
- static const WCHAR InstallRunOnce[] = {
-
'S','o','f','t','w','a','r','e','\\',
-
'M','i','c','r','o','s','o','f','t','\\',
-
'W','i','n','d','o','w','s','\\',
-
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
-
'I','n','s','t','a','l','l','e','r','\\',
-
'R','u','n','O','n','c','e','E','n','t','r','i','e','s',0};
-
- static const WCHAR msiexec_fmt[] = {
- '%','s',
-
'\\','M','s','i','E','x','e','c','.','e','x','e','
','/','@',' ',
- '\"','%','s','\"',0};
- static const WCHAR install_fmt[] = {
- '/','I','
','\"','%','s','\"',' ',
-
'A','F','T','E','R','R','E','B','O','O','T','=','1','
',
-
'R','U','N','O','N','C','E','E','N','T','R','Y','=','\"','%','s','\"',0};
WCHAR buffer[256], sysdir[MAX_PATH], squashed_pc[SQUASHED_GUID_SIZE];
HKEY hkey;
squash_guid( package->ProductCode, squashed_pc );
GetSystemDirectoryW(sysdir, ARRAY_SIZE(sysdir));
- RegCreateKeyW(HKEY_LOCAL_MACHINE,RunOnce,&hkey);
- swprintf(buffer, ARRAY_SIZE(buffer), msiexec_fmt, sysdir, squashed_pc);
+ RegCreateKeyW(HKEY_LOCAL_MACHINE,
L"Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", &hkey);
+ swprintf(buffer, ARRAY_SIZE(buffer), L"%s\\MsiExec.exe /@
\"%s\"", sysdir, squashed_pc);
msi_reg_set_val_str( hkey, squashed_pc, buffer );
RegCloseKey(hkey);
TRACE("Reboot command %s\n",debugstr_w(buffer));
- RegCreateKeyW(HKEY_LOCAL_MACHINE,InstallRunOnce,&hkey);
- swprintf( buffer, ARRAY_SIZE(buffer), install_fmt, package->ProductCode,
squashed_pc );
+ RegCreateKeyW(HKEY_LOCAL_MACHINE,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\RunOnceEntries",
+ &hkey);
+ swprintf( buffer, ARRAY_SIZE(buffer), L"/I \"%s\" AFTERREBOOT=1
RUNONCEENTRY=\"%s\"", package->ProductCode,
+ squashed_pc );
msi_reg_set_val_str( hkey, squashed_pc, buffer );
RegCloseKey(hkey);
@@ -5645,29 +5263,27 @@ static UINT ACTION_ResolveSource(MSIPACKAGE* package)
static UINT ACTION_RegisterUser(MSIPACKAGE *package)
{
- HKEY hkey = 0;
- LPWSTR buffer, productid = NULL;
- UINT i, rc = ERROR_SUCCESS;
- MSIRECORD *uirow;
-
- static const WCHAR szPropKeys[][80] =
+ static const WCHAR szPropKeys[][80] =
{
-
{'P','r','o','d','u','c','t','I','D',0},
-
{'U','S','E','R','N','A','M','E',0},
-
{'C','O','M','P','A','N','Y','N','A','M','E',0},
+ L"ProductID",
+ L"USERNAME",
+ L"COMPANYNAME",
{0},
};
-
- static const WCHAR szRegKeys[][80] =
+ static const WCHAR szRegKeys[][80] =
{
-
{'P','r','o','d','u','c','t','I','D',0},
-
{'R','e','g','O','w','n','e','r',0},
-
{'R','e','g','C','o','m','p','a','n','y',0},
+ L"ProductID",
+ L"RegOwner",
+ L"RegCompany",
{0},
};
+ HKEY hkey = 0;
+ LPWSTR buffer, productid = NULL;
+ UINT i, rc = ERROR_SUCCESS;
+ MSIRECORD *uirow;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRegisterUser);
+ return msi_schedule_action(package, SCRIPT_INSTALL, L"RegisterUser");
if (msi_check_unpublish(package))
{
@@ -5704,13 +5320,11 @@ end:
static UINT iterate_properties(MSIRECORD *record, void *param)
{
- static const WCHAR prop_template[] =
-
{'P','r','o','p','e','r','t','y','(','S',')',':','
','[','1',']',' ','=','
','[','2',']',0};
MSIRECORD *uirow;
uirow = MSI_CloneRecord(record);
if (!uirow) return ERROR_OUTOFMEMORY;
- MSI_RecordSetStringW(uirow, 0, prop_template);
+ MSI_RecordSetStringW(uirow, 0, L"Property(S): [1] = [2]");
MSI_ProcessMessage(param, INSTALLMESSAGE_INFO|MB_ICONHAND, uirow);
msiobj_release(&uirow->hdr);
@@ -5720,8 +5334,6 @@ static UINT iterate_properties(MSIRECORD *record, void *param)
static UINT ACTION_ExecuteAction(MSIPACKAGE *package)
{
- static const WCHAR prop_query[] =
- {'S','E','L','E','C','T','
','*',' ','F','R','O','M','
','`','_','P','r','o','p','e','r','t','y','`',0};
WCHAR *productname;
WCHAR *action;
WCHAR *info_template;
@@ -5767,15 +5379,15 @@ static UINT ACTION_ExecuteAction(MSIPACKAGE *package)
package->LastActionResult = MSI_NULL_INTEGER;
- action = msi_dup_property(package->db, szEXECUTEACTION);
- if (!action) action = msi_strdupW(szINSTALL, lstrlenW(szINSTALL));
+ action = msi_dup_property(package->db, L"EXECUTEACTION");
+ if (!action) action = msi_strdupW(L"INSTALL",
ARRAY_SIZE(L"INSTALL") - 1);
/* Perform the action. Top-level actions trigger a sequence. */
- if (!wcscmp(action, szINSTALL))
+ if (!wcscmp(action, L"INSTALL"))
{
/* Send ACTIONSTART/INFO and INSTALLSTART. */
- ui_actionstart(package, szINSTALL, NULL, NULL);
- ui_actioninfo(package, szINSTALL, TRUE, 0);
+ ui_actionstart(package, L"INSTALL", NULL, NULL);
+ ui_actioninfo(package, L"INSTALL", TRUE, 0);
uirow = MSI_CreateRecord(2);
if (!uirow)
{
@@ -5793,7 +5405,7 @@ static UINT ACTION_ExecuteAction(MSIPACKAGE *package)
rc = ACTION_ProcessExecSequence(package);
/* Send return value and INSTALLEND. */
- ui_actioninfo(package, szINSTALL, FALSE, !rc);
+ ui_actioninfo(package, L"INSTALL", FALSE, !rc);
uirow = MSI_CreateRecord(3);
if (!uirow)
{
@@ -5811,7 +5423,7 @@ static UINT ACTION_ExecuteAction(MSIPACKAGE *package)
rc = ACTION_PerformAction(package, action);
/* Send all set properties. */
- if (!MSI_OpenQuery(package->db, &view, prop_query))
+ if (!MSI_OpenQuery(package->db, &view, L"SELECT * FROM
`_Property`"))
{
MSI_IterateRecords(view, NULL, iterate_properties, package);
msiobj_release(&view->hdr);
@@ -5840,7 +5452,7 @@ end:
static UINT ACTION_INSTALL(MSIPACKAGE *package)
{
- msi_set_property(package->db, szEXECUTEACTION, szINSTALL, -1);
+ msi_set_property(package->db, L"EXECUTEACTION", L"INSTALL",
-1);
if (needs_ui_sequence(package) && ui_sequence_exists(package))
{
package->InWhatSequence |= SEQUENCE_UI;
@@ -5852,7 +5464,6 @@ static UINT ACTION_INSTALL(MSIPACKAGE *package)
WCHAR *msi_create_component_advertise_string( MSIPACKAGE *package, MSICOMPONENT
*component, const WCHAR *feature )
{
- static const WCHAR fmt[] =
{'%','s','%','s','%','c','%','s',0};
WCHAR productid_85[21], component_85[21], *ret;
GUID clsid;
DWORD sz;
@@ -5875,7 +5486,7 @@ WCHAR *msi_create_component_advertise_string( MSIPACKAGE *package,
MSICOMPONENT
sz = 20 + lstrlenW( feature ) + 20 + 3;
ret = msi_alloc_zero( sz * sizeof(WCHAR) );
- if (ret) swprintf( ret, sz, fmt, productid_85, feature, component ? '>' :
'<', component_85 );
+ if (ret) swprintf( ret, sz, L"%s%s%c%s", productid_85, feature, component ?
'>' : '<', component_85 );
return ret;
}
@@ -5985,16 +5596,13 @@ end:
*/
static UINT ACTION_PublishComponents(MSIPACKAGE *package)
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','P','u','b','l','i','s','h','C','o','m','p','o','n','e','n','t','`',0};
MSIQUERY *view;
UINT rc;
-
+
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szPublishComponents);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"PublishComponents");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM
`PublishComponent`", &view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -6005,12 +5613,6 @@ static UINT ACTION_PublishComponents(MSIPACKAGE *package)
static UINT ITERATE_UnpublishComponent( MSIRECORD *rec, LPVOID param )
{
- static const WCHAR szInstallerComponents[] = {
-
'S','o','f','t','w','a','r','e','\\',
-
'M','i','c','r','o','s','o','f','t','\\',
-
'I','n','s','t','a','l','l','e','r','\\',
-
'C','o','m','p','o','n','e','n','t','s','\\',0};
-
MSIPACKAGE *package = param;
LPCWSTR compgroupid, component, feature, qualifier;
MSICOMPONENT *comp;
@@ -6040,7 +5642,7 @@ static UINT ITERATE_UnpublishComponent( MSIRECORD *rec, LPVOID param
)
qualifier = MSI_RecordGetString( rec, 2 );
squash_guid( compgroupid, squashed );
- lstrcpyW( keypath, szInstallerComponents );
+ lstrcpyW( keypath, L"Software\\Microsoft\\Installer\\Components\\" );
lstrcatW( keypath, squashed );
res = RegDeleteKeyW( HKEY_CURRENT_USER, keypath );
@@ -6060,16 +5662,13 @@ static UINT ITERATE_UnpublishComponent( MSIRECORD *rec, LPVOID
param )
static UINT ACTION_UnpublishComponents( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','P','u','b','l','i','s','h','C','o','m','p','o','n','e','n','t','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szUnpublishComponents);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"UnpublishComponents");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`PublishComponent`", &view );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -6080,10 +5679,6 @@ static UINT ACTION_UnpublishComponents( MSIPACKAGE *package )
static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param)
{
- static const WCHAR query[] =
- {'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','C','o','m','p','o','n','e','n','t','`','
','W','H','E','R','E',' ',
-
'`','C','o','m','p','o','n','e','n','t','`','
','=','\'','%','s','\'',0};
MSIPACKAGE *package = param;
MSICOMPONENT *component;
MSIRECORD *row;
@@ -6140,7 +5735,7 @@ static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param)
err_control &= ~msidbServiceInstallErrorControlVital;
/* fetch the service path */
- row = MSI_QueryGetRecord(package->db, query, comp);
+ row = MSI_QueryGetRecord(package->db, L"SELECT * FROM `Component` WHERE
`Component` = '%s'", comp);
if (!row)
{
ERR("Query failed\n");
@@ -6170,7 +5765,7 @@ static UINT ITERATE_InstallService(MSIRECORD *rec, LPVOID param)
}
lstrcpyW(image_path, file->TargetPath);
- lstrcatW(image_path, szSpace);
+ lstrcatW(image_path, L" ");
lstrcatW(image_path, args);
}
service = CreateServiceW(hscm, name, disp, GENERIC_ALL, serv_type,
@@ -6211,16 +5806,13 @@ done:
static UINT ACTION_InstallServices( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'S','e','r','v','i','c','e','I','n','s','t','a','l','l',0};
MSIQUERY *view;
UINT rc;
-
+
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szInstallServices);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"InstallServices");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM
`ServiceInstall`", &view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -6236,10 +5828,8 @@ static LPCWSTR *msi_service_args_to_vector(LPWSTR args, DWORD
*numargs)
LPWSTR p, q;
DWORD sep_len;
- static const WCHAR separator[] = {'[','~',']',0};
-
*numargs = 0;
- sep_len = ARRAY_SIZE(separator) - 1;
+ sep_len = ARRAY_SIZE(L"[~]") - 1;
if (!args)
return NULL;
@@ -6254,7 +5844,7 @@ static LPCWSTR *msi_service_args_to_vector(LPWSTR args, DWORD
*numargs)
(*numargs)++;
vector[*numargs - 1] = p;
- if ((q = wcsstr(p, separator)))
+ if ((q = wcsstr(p, L"[~]")))
{
*q = '\0';
@@ -6385,16 +5975,13 @@ done:
static UINT ACTION_StartServices( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'S','e','r','v','i','c','e','C','o','n','t','r','o','l',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szStartServices);
+ return msi_schedule_action(package, SCRIPT_INSTALL, L"StartServices");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM
`ServiceControl`", &view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -6551,16 +6138,13 @@ done:
static UINT ACTION_StopServices( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'S','e','r','v','i','c','e','C','o','n','t','r','o','l',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szStopServices);
+ return msi_schedule_action(package, SCRIPT_INSTALL, L"StopServices");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM
`ServiceControl`", &view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -6637,16 +6221,13 @@ done:
static UINT ACTION_DeleteServices( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'S','e','r','v','i','c','e','C','o','n','t','r','o','l',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szDeleteServices);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"DeleteServices");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`ServiceControl`", &view );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -6667,13 +6248,6 @@ static UINT ITERATE_InstallODBCDriver( MSIRECORD *rec, LPVOID param
)
DWORD len, usage;
UINT r = ERROR_SUCCESS;
- static const WCHAR driver_fmt[] = {
-
'D','r','i','v','e','r','=','%','s',0};
- static const WCHAR setup_fmt[] = {
-
'S','e','t','u','p','=','%','s',0};
- static const WCHAR usage_fmt[] = {
-
'F','i','l','e','U','s','a','g','e','=','1',0};
-
component = MSI_RecordGetString( rec, 2 );
comp = msi_get_loaded_component( package, component );
if (!comp)
@@ -6699,10 +6273,10 @@ static UINT ITERATE_InstallODBCDriver( MSIRECORD *rec, LPVOID
param )
return ERROR_FUNCTION_FAILED;
}
- len = lstrlenW(desc) + lstrlenW(driver_fmt) + lstrlenW(driver_file->FileName);
+ len = lstrlenW(desc) + lstrlenW(L"Driver=%s") +
lstrlenW(driver_file->FileName);
if (setup_file)
- len += lstrlenW(setup_fmt) + lstrlenW(setup_file->FileName);
- len += lstrlenW(usage_fmt) + 2; /* \0\0 */
+ len += lstrlenW(L"Setup=%s") + lstrlenW(setup_file->FileName);
+ len += lstrlenW(L"FileUsage=1") + 2; /* \0\0 */
driver = msi_alloc(len * sizeof(WCHAR));
if (!driver)
@@ -6712,16 +6286,16 @@ static UINT ITERATE_InstallODBCDriver( MSIRECORD *rec, LPVOID
param )
lstrcpyW(ptr, desc);
ptr += lstrlenW(ptr) + 1;
- len = swprintf(ptr, len - (ptr - driver), driver_fmt, driver_file->FileName);
+ len = swprintf(ptr, len - (ptr - driver), L"Driver=%s",
driver_file->FileName);
ptr += len + 1;
if (setup_file)
{
- len = swprintf(ptr, len - (ptr - driver), setup_fmt, setup_file->FileName);
+ len = swprintf(ptr, len - (ptr - driver), L"Setup=%s",
setup_file->FileName);
ptr += len + 1;
}
- lstrcpyW(ptr, usage_fmt);
+ lstrcpyW(ptr, L"FileUsage=1");
ptr += lstrlenW(ptr) + 1;
*ptr = '\0';
@@ -6766,11 +6340,6 @@ static UINT ITERATE_InstallODBCTranslator( MSIRECORD *rec, LPVOID
param )
DWORD len, usage;
UINT r = ERROR_SUCCESS;
- static const WCHAR translator_fmt[] = {
-
'T','r','a','n','s','l','a','t','o','r','=','%','s',0};
- static const WCHAR setup_fmt[] = {
-
'S','e','t','u','p','=','%','s',0};
-
component = MSI_RecordGetString( rec, 2 );
comp = msi_get_loaded_component( package, component );
if (!comp)
@@ -6796,9 +6365,9 @@ static UINT ITERATE_InstallODBCTranslator( MSIRECORD *rec, LPVOID
param )
return ERROR_FUNCTION_FAILED;
}
- len = lstrlenW(desc) + lstrlenW(translator_fmt) +
lstrlenW(translator_file->FileName) + 2; /* \0\0 */
+ len = lstrlenW(desc) + lstrlenW(L"Translator=%s") +
lstrlenW(translator_file->FileName) + 2; /* \0\0 */
if (setup_file)
- len += lstrlenW(setup_fmt) + lstrlenW(setup_file->FileName);
+ len += lstrlenW(L"Setup=%s") + lstrlenW(setup_file->FileName);
translator = msi_alloc(len * sizeof(WCHAR));
if (!translator)
@@ -6808,12 +6377,12 @@ static UINT ITERATE_InstallODBCTranslator( MSIRECORD *rec, LPVOID
param )
lstrcpyW(ptr, desc);
ptr += lstrlenW(ptr) + 1;
- len = swprintf(ptr, len - (ptr - translator), translator_fmt,
translator_file->FileName);
+ len = swprintf(ptr, len - (ptr - translator), L"Translator=%s",
translator_file->FileName);
ptr += len + 1;
if (setup_file)
{
- len = swprintf(ptr, len - (ptr - translator), setup_fmt,
setup_file->FileName);
+ len = swprintf(ptr, len - (ptr - translator), L"Setup=%s",
setup_file->FileName);
ptr += len + 1;
}
*ptr = '\0';
@@ -6854,9 +6423,6 @@ static UINT ITERATE_InstallODBCDataSource( MSIRECORD *rec, LPVOID
param )
UINT r = ERROR_SUCCESS;
MSIRECORD *uirow;
- static const WCHAR attrs_fmt[] = {
- 'D','S','N','=','%','s',0 };
-
component = MSI_RecordGetString( rec, 2 );
comp = msi_get_loaded_component( package, component );
if (!comp)
@@ -6876,12 +6442,12 @@ static UINT ITERATE_InstallODBCDataSource( MSIRECORD *rec, LPVOID
param )
if (registration == msidbODBCDataSourceRegistrationPerMachine) request =
ODBC_ADD_SYS_DSN;
else if (registration == msidbODBCDataSourceRegistrationPerUser) request =
ODBC_ADD_DSN;
- len = lstrlenW(attrs_fmt) + lstrlenW(desc) + 2; /* \0\0 */
+ len = lstrlenW(L"DSN=%s") + lstrlenW(desc) + 2; /* \0\0 */
attrs = msi_alloc(len * sizeof(WCHAR));
if (!attrs)
return ERROR_OUTOFMEMORY;
- len = swprintf(attrs, len, attrs_fmt, desc);
+ len = swprintf(attrs, len, L"DSN=%s", desc);
attrs[len + 1] = 0;
if (!SQLConfigDataSourceW(NULL, request, driver, attrs))
@@ -6901,22 +6467,13 @@ static UINT ITERATE_InstallODBCDataSource( MSIRECORD *rec, LPVOID
param )
static UINT ACTION_InstallODBC( MSIPACKAGE *package )
{
- static const WCHAR driver_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'O','D','B','C','D','r','i','v','e','r',0};
- static const WCHAR translator_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'O','D','B','C','T','r','a','n','s','l','a','t','o','r',0};
- static const WCHAR source_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'O','D','B','C','D','a','t','a','S','o','u','r','c','e',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szInstallODBC);
+ return msi_schedule_action(package, SCRIPT_INSTALL, L"InstallODBC");
- rc = MSI_DatabaseOpenViewW(package->db, driver_query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `ODBCDriver`",
&view);
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords(view, NULL, ITERATE_InstallODBCDriver, package);
@@ -6924,7 +6481,7 @@ static UINT ACTION_InstallODBC( MSIPACKAGE *package )
if (rc != ERROR_SUCCESS)
return rc;
}
- rc = MSI_DatabaseOpenViewW(package->db, translator_query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM
`ODBCTranslator`", &view);
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords(view, NULL, ITERATE_InstallODBCTranslator, package);
@@ -6932,7 +6489,7 @@ static UINT ACTION_InstallODBC( MSIPACKAGE *package )
if (rc != ERROR_SUCCESS)
return rc;
}
- rc = MSI_DatabaseOpenViewW(package->db, source_query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM
`ODBCDataSource`", &view);
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords(view, NULL, ITERATE_InstallODBCDataSource, package);
@@ -7032,9 +6589,6 @@ static UINT ITERATE_RemoveODBCDataSource( MSIRECORD *rec, LPVOID
param )
INT registration;
DWORD len;
- static const WCHAR attrs_fmt[] = {
- 'D','S','N','=','%','s',0 };
-
component = MSI_RecordGetString( rec, 2 );
comp = msi_get_loaded_component( package, component );
if (!comp)
@@ -7054,14 +6608,14 @@ static UINT ITERATE_RemoveODBCDataSource( MSIRECORD *rec, LPVOID
param )
if (registration == msidbODBCDataSourceRegistrationPerMachine) request =
ODBC_REMOVE_SYS_DSN;
else if (registration == msidbODBCDataSourceRegistrationPerUser) request =
ODBC_REMOVE_DSN;
- len = lstrlenW( attrs_fmt ) + lstrlenW( desc ) + 2; /* \0\0 */
+ len = lstrlenW( L"DSN=%s" ) + lstrlenW( desc ) + 2; /* \0\0 */
attrs = msi_alloc( len * sizeof(WCHAR) );
if (!attrs)
return ERROR_OUTOFMEMORY;
FIXME("Use ODBCSourceAttribute table\n");
- len = swprintf( attrs, len, attrs_fmt, desc );
+ len = swprintf( attrs, len, L"DSN=%s", desc );
attrs[len + 1] = 0;
if (!SQLConfigDataSourceW( NULL, request, driver, attrs ))
@@ -7082,22 +6636,13 @@ static UINT ITERATE_RemoveODBCDataSource( MSIRECORD *rec, LPVOID
param )
static UINT ACTION_RemoveODBC( MSIPACKAGE *package )
{
- static const WCHAR driver_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'O','D','B','C','D','r','i','v','e','r',0};
- static const WCHAR translator_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'O','D','B','C','T','r','a','n','s','l','a','t','o','r',0};
- static const WCHAR source_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'O','D','B','C','D','a','t','a','S','o','u','r','c','e',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRemoveODBC);
+ return msi_schedule_action(package, SCRIPT_INSTALL, L"RemoveODBC");
- rc = MSI_DatabaseOpenViewW( package->db, driver_query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `ODBCDriver`",
&view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, NULL, ITERATE_RemoveODBCDriver, package );
@@ -7105,7 +6650,7 @@ static UINT ACTION_RemoveODBC( MSIPACKAGE *package )
if (rc != ERROR_SUCCESS)
return rc;
}
- rc = MSI_DatabaseOpenViewW( package->db, translator_query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`ODBCTranslator`", &view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, NULL, ITERATE_RemoveODBCTranslator, package );
@@ -7113,7 +6658,7 @@ static UINT ACTION_RemoveODBC( MSIPACKAGE *package )
if (rc != ERROR_SUCCESS)
return rc;
}
- rc = MSI_DatabaseOpenViewW( package->db, source_query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`ODBCDataSource`", &view );
if (rc == ERROR_SUCCESS)
{
rc = MSI_IterateRecords( view, NULL, ITERATE_RemoveODBCDataSource, package );
@@ -7138,10 +6683,7 @@ static UINT ACTION_RemoveODBC( MSIPACKAGE *package )
static UINT env_parse_flags( LPCWSTR *name, LPCWSTR *value, DWORD *flags )
{
- LPCWSTR cptr = *name;
-
- static const WCHAR prefix[] = {'[','~',']',0};
- static const int prefix_len = 3;
+ const WCHAR *cptr = *name;
*flags = 0;
while (*cptr)
@@ -7172,24 +6714,24 @@ static UINT env_parse_flags( LPCWSTR *name, LPCWSTR *value, DWORD
*flags )
if (*value)
{
LPCWSTR ptr = *value;
- if (!wcsncmp(ptr, prefix, prefix_len))
+ if (!wcsncmp(ptr, L"[~]", 3))
{
- if (ptr[prefix_len] == szSemiColon[0])
+ if (ptr[3] == ';')
{
*flags |= ENV_MOD_APPEND;
- *value += lstrlenW(prefix);
+ *value += 3;
}
else
{
*value = NULL;
}
}
- else if (lstrlenW(*value) >= prefix_len)
+ else if (lstrlenW(*value) >= 3)
{
- ptr += lstrlenW(ptr) - prefix_len;
- if (!wcscmp( ptr, prefix ))
+ ptr += lstrlenW(ptr) - 3;
+ if (!wcscmp( ptr, L"[~]" ))
{
- if ((ptr-1) > *value && *(ptr-1) == szSemiColon[0])
+ if ((ptr-1) > *value && *(ptr-1) == ';')
{
*flags |= ENV_MOD_PREFIX;
/* the "[~]" will be removed by deformat_string */;
@@ -7219,26 +6761,18 @@ static UINT env_parse_flags( LPCWSTR *name, LPCWSTR *value, DWORD
*flags )
static UINT open_env_key( DWORD flags, HKEY *key )
{
- static const WCHAR user_env[] =
-
{'E','n','v','i','r','o','n','m','e','n','t',0};
- static const WCHAR machine_env[] =
-
{'S','y','s','t','e','m','\\',
-
'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
-
'C','o','n','t','r','o','l','\\',
-
'S','e','s','s','i','o','n','
','M','a','n','a','g','e','r','\\',
-
'E','n','v','i','r','o','n','m','e','n','t',0};
const WCHAR *env;
HKEY root;
LONG res;
if (flags & ENV_MOD_MACHINE)
{
- env = machine_env;
+ env = L"System\\CurrentControlSet\\Control\\Session
Manager\\Environment";
root = HKEY_LOCAL_MACHINE;
}
else
{
- env = user_env;
+ env = L"Environment";
root = HKEY_CURRENT_USER;
}
@@ -7437,16 +6971,13 @@ done:
static UINT ACTION_WriteEnvironmentStrings( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','E','n','v','i','r','o','n','m','e','n','t','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szWriteEnvironmentStrings);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"WriteEnvironmentStrings");
- rc = MSI_DatabaseOpenViewW(package->db, query, &view);
+ rc = MSI_DatabaseOpenViewW(package->db, L"SELECT * FROM `Environment`",
&view);
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -7582,16 +7113,13 @@ done:
static UINT ACTION_RemoveEnvironmentStrings( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','E','n','v','i','r','o','n','m','e','n','t','`',0};
MSIQUERY *view;
UINT rc;
if (package->script == SCRIPT_NONE)
- return msi_schedule_action(package, SCRIPT_INSTALL, szRemoveEnvironmentStrings);
+ return msi_schedule_action(package, SCRIPT_INSTALL,
L"RemoveEnvironmentStrings");
- rc = MSI_DatabaseOpenViewW( package->db, query, &view );
+ rc = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Environment`",
&view );
if (rc != ERROR_SUCCESS)
return ERROR_SUCCESS;
@@ -7605,21 +7133,21 @@ UINT msi_validate_product_id( MSIPACKAGE *package )
LPWSTR key, template, id;
UINT r = ERROR_SUCCESS;
- id = msi_dup_property( package->db, szProductID );
+ id = msi_dup_property( package->db, L"ProductID" );
if (id)
{
msi_free( id );
return ERROR_SUCCESS;
}
- template = msi_dup_property( package->db, szPIDTemplate );
- key = msi_dup_property( package->db, szPIDKEY );
+ template = msi_dup_property( package->db, L"PIDTemplate" );
+ key = msi_dup_property( package->db, L"PIDKEY" );
if (key && template)
{
FIXME( "partial stub: template %s key %s\n", debugstr_w(template),
debugstr_w(key) );
#ifdef __REACTOS__
WARN("Product key validation HACK, see CORE-14710\n");
#else
- r = msi_set_property( package->db, szProductID, key, -1 );
+ r = msi_set_property( package->db, L"ProductID", key, -1 );
#endif
}
msi_free( template );
@@ -7641,10 +7169,8 @@ static UINT ACTION_ScheduleReboot( MSIPACKAGE *package )
static UINT ACTION_AllocateRegistrySpace( MSIPACKAGE *package )
{
- static const WCHAR szAvailableFreeReg[] =
-
{'A','V','A','I','L','A','B','L','E','F','R','E','E','R','E','G',0};
MSIRECORD *uirow;
- int space = msi_get_property_int( package->db, szAvailableFreeReg, 0 );
+ int space = msi_get_property_int( package->db, L"AVAILABLEFREEREG", 0
);
TRACE("%p %d kilobytes\n", package, space);
@@ -7660,7 +7186,7 @@ static UINT ACTION_DisableRollback( MSIPACKAGE *package )
{
TRACE("%p\n", package);
- msi_set_property( package->db, szRollbackDisabled, szOne, -1 );
+ msi_set_property( package->db, L"RollbackDisabled", L"1", -1
);
return ERROR_SUCCESS;
}
@@ -7672,16 +7198,10 @@ static UINT ACTION_InstallAdminPackage( MSIPACKAGE *package )
static UINT ACTION_SetODBCFolders( MSIPACKAGE *package )
{
- static const WCHAR driver_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'O','D','B','C','D','r','i','v','e','r',0};
- static const WCHAR translator_query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'O','D','B','C','T','r','a','n','s','l','a','t','o','r',0};
MSIQUERY *view;
UINT r, count;
- r = MSI_DatabaseOpenViewW( package->db, driver_query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `ODBCDriver`",
&view );
if (r == ERROR_SUCCESS)
{
count = 0;
@@ -7691,7 +7211,7 @@ static UINT ACTION_SetODBCFolders( MSIPACKAGE *package )
return r;
if (count) FIXME("ignored %u rows in ODBCDriver table\n", count);
}
- r = MSI_DatabaseOpenViewW( package->db, translator_query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM
`ODBCTranslator`", &view );
if (r == ERROR_SUCCESS)
{
count = 0;
@@ -7706,13 +7226,10 @@ static UINT ACTION_SetODBCFolders( MSIPACKAGE *package )
static UINT ITERATE_RemoveExistingProducts( MSIRECORD *rec, LPVOID param )
{
- static const WCHAR fmtW[] =
-
{'m','s','i','e','x','e','c','
','/','q','n',' ','/','i','
','%','s',' ',
-
'R','E','M','O','V','E','=','%','s',0};
MSIPACKAGE *package = param;
const WCHAR *property = MSI_RecordGetString( rec, 7 );
int attrs = MSI_RecordGetInteger( rec, 5 );
- UINT len = ARRAY_SIZE( fmtW );
+ UINT len = ARRAY_SIZE( L"msiexec /qn /i %s REMOVE=%s" );
WCHAR *product, *features, *cmd;
STARTUPINFOW si;
PROCESS_INFORMATION info;
@@ -7727,7 +7244,7 @@ static UINT ITERATE_RemoveExistingProducts( MSIRECORD *rec, LPVOID
param )
if (features)
len += lstrlenW( features );
else
- len += ARRAY_SIZE( szAll );
+ len += ARRAY_SIZE( L"ALL" );
if (!(cmd = msi_alloc( len * sizeof(WCHAR) )))
{
@@ -7735,7 +7252,7 @@ static UINT ITERATE_RemoveExistingProducts( MSIRECORD *rec, LPVOID
param )
msi_free( features );
return ERROR_OUTOFMEMORY;
}
- swprintf( cmd, len, fmtW, product, features ? features : szAll );
+ swprintf( cmd, len, L"msiexec /qn /i %s REMOVE=%s", product, features ?
features : L"ALL" );
msi_free( product );
msi_free( features );
@@ -7752,12 +7269,10 @@ static UINT ITERATE_RemoveExistingProducts( MSIRECORD *rec, LPVOID
param )
static UINT ACTION_RemoveExistingProducts( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
','U','p','g','r','a','d','e',0};
MSIQUERY *view;
UINT r;
- r = MSI_DatabaseOpenViewW( package->db, query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Upgrade`",
&view );
if (r == ERROR_SUCCESS)
{
r = MSI_IterateRecords( view, NULL, ITERATE_RemoveExistingProducts, package );
@@ -7805,23 +7320,20 @@ static UINT ITERATE_MigrateFeatureStates( MSIRECORD *rec, LPVOID
param )
static UINT ACTION_MigrateFeatureStates( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'U','p','g','r','a','d','e',0};
MSIQUERY *view;
UINT r;
- if (msi_get_property_int( package->db, szInstalled, 0 ))
+ if (msi_get_property_int( package->db, L"Installed", 0 ))
{
TRACE("product is installed, skipping action\n");
return ERROR_SUCCESS;
}
- if (msi_get_property_int( package->db, szPreselected, 0 ))
+ if (msi_get_property_int( package->db, L"Preselected", 0 ))
{
TRACE("Preselected property is set, not migrating feature states\n");
return ERROR_SUCCESS;
}
- r = MSI_DatabaseOpenViewW( package->db, query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `Upgrade`",
&view );
if (r == ERROR_SUCCESS)
{
r = MSI_IterateRecords( view, NULL, ITERATE_MigrateFeatureStates, package );
@@ -7889,13 +7401,10 @@ static UINT ITERATE_BindImage( MSIRECORD *rec, LPVOID param )
static UINT ACTION_BindImage( MSIPACKAGE *package )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'B','i','n','d','I','m','a','g','e',0};
MSIQUERY *view;
UINT r;
- r = MSI_DatabaseOpenViewW( package->db, query, &view );
+ r = MSI_DatabaseOpenViewW( package->db, L"SELECT * FROM `BindImage`",
&view );
if (r == ERROR_SUCCESS)
{
MSI_IterateRecords( view, NULL, ITERATE_BindImage, package );
@@ -7906,13 +7415,11 @@ static UINT ACTION_BindImage( MSIPACKAGE *package )
static UINT msi_unimplemented_action_stub( MSIPACKAGE *package, LPCSTR action, LPCWSTR
table )
{
- static const WCHAR query[] = {
- 'S','E','L','E','C','T','
','*',' ','F','R','O','M','
','`','%','s','`',0};
MSIQUERY *view;
DWORD count = 0;
UINT r;
-
- r = MSI_OpenQuery( package->db, &view, query, table );
+
+ r = MSI_OpenQuery( package->db, &view, L"SELECT * FROM `%s`", table
);
if (r == ERROR_SUCCESS)
{
r = MSI_IterateRecords(view, &count, NULL, package);
@@ -7926,33 +7433,27 @@ static UINT msi_unimplemented_action_stub( MSIPACKAGE *package,
LPCSTR action, L
static UINT ACTION_IsolateComponents( MSIPACKAGE *package )
{
- static const WCHAR table[] = {
-
'I','s','o','l','a','t','e','d','C','o','m','p','o','n','e','n','t',0
};
- return msi_unimplemented_action_stub( package, "IsolateComponents", table
);
+ return msi_unimplemented_action_stub( package, "IsolateComponents",
L"IsolateComponent" );
}
static UINT ACTION_RMCCPSearch( MSIPACKAGE *package )
{
- static const WCHAR table[] = {
'C','C','P','S','e','a','r','c','h',0
};
- return msi_unimplemented_action_stub( package, "RMCCPSearch", table );
+ return msi_unimplemented_action_stub( package, "RMCCPSearch",
L"CCPSearch" );
}
static UINT ACTION_RegisterComPlus( MSIPACKAGE *package )
{
- static const WCHAR table[] = {
'C','o','m','p','l','u','s',0 };
- return msi_unimplemented_action_stub( package, "RegisterComPlus", table );
+ return msi_unimplemented_action_stub( package, "RegisterComPlus",
L"Complus" );
}
static UINT ACTION_UnregisterComPlus( MSIPACKAGE *package )
{
- static const WCHAR table[] = {
'C','o','m','p','l','u','s',0 };
- return msi_unimplemented_action_stub( package, "UnregisterComPlus", table
);
+ return msi_unimplemented_action_stub( package, "UnregisterComPlus",
L"Complus" );
}
static UINT ACTION_InstallSFPCatalogFile( MSIPACKAGE *package )
{
- static const WCHAR table[] = {
'S','F','P','C','a','t','a','l','o','g',0
};
- return msi_unimplemented_action_stub( package, "InstallSFPCatalogFile",
table );
+ return msi_unimplemented_action_stub( package, "InstallSFPCatalogFile",
L"SFPCatalog" );
}
static const struct
@@ -7965,83 +7466,83 @@ static const struct
}
StandardActions[] =
{
- { szAllocateRegistrySpace, IDS_DESC_ALLOCATEREGISTRYSPACE,
IDS_TEMP_ALLOCATEREGISTRYSPACE, ACTION_AllocateRegistrySpace, NULL },
- { szAppSearch, IDS_DESC_APPSEARCH, IDS_TEMP_APPSEARCH, ACTION_AppSearch, NULL },
- { szBindImage, IDS_DESC_BINDIMAGE, IDS_TEMP_BINDIMAGE, ACTION_BindImage, NULL },
- { szCCPSearch, IDS_DESC_CCPSEARCH, 0, ACTION_CCPSearch, NULL },
- { szCostFinalize, IDS_DESC_COSTFINALIZE, 0, ACTION_CostFinalize, NULL },
- { szCostInitialize, IDS_DESC_COSTINITIALIZE, 0, ACTION_CostInitialize, NULL },
- { szCreateFolders, IDS_DESC_CREATEFOLDERS, IDS_TEMP_CREATEFOLDERS,
ACTION_CreateFolders, szRemoveFolders },
- { szCreateShortcuts, IDS_DESC_CREATESHORTCUTS, IDS_TEMP_CREATESHORTCUTS,
ACTION_CreateShortcuts, szRemoveShortcuts },
- { szDeleteServices, IDS_DESC_DELETESERVICES, IDS_TEMP_DELETESERVICES,
ACTION_DeleteServices, szInstallServices },
- { szDisableRollback, 0, 0, ACTION_DisableRollback, NULL },
- { szDuplicateFiles, IDS_DESC_DUPLICATEFILES, IDS_TEMP_DUPLICATEFILES,
ACTION_DuplicateFiles, szRemoveDuplicateFiles },
- { szExecuteAction, 0, 0, ACTION_ExecuteAction, NULL },
- { szFileCost, IDS_DESC_FILECOST, 0, ACTION_FileCost, NULL },
- { szFindRelatedProducts, IDS_DESC_FINDRELATEDPRODUCTS, IDS_TEMP_FINDRELATEDPRODUCTS,
ACTION_FindRelatedProducts, NULL },
- { szForceReboot, 0, 0, ACTION_ForceReboot, NULL },
- { szInstallAdminPackage, IDS_DESC_INSTALLADMINPACKAGE, IDS_TEMP_INSTALLADMINPACKAGE,
ACTION_InstallAdminPackage, NULL },
- { szInstallExecute, 0, 0, ACTION_InstallExecute, NULL },
- { szInstallExecuteAgain, 0, 0, ACTION_InstallExecute, NULL },
- { szInstallFiles, IDS_DESC_INSTALLFILES, IDS_TEMP_INSTALLFILES, ACTION_InstallFiles,
szRemoveFiles },
- { szInstallFinalize, 0, 0, ACTION_InstallFinalize, NULL },
- { szInstallInitialize, 0, 0, ACTION_InstallInitialize, NULL },
- { szInstallODBC, IDS_DESC_INSTALLODBC, 0, ACTION_InstallODBC, szRemoveODBC },
- { szInstallServices, IDS_DESC_INSTALLSERVICES, IDS_TEMP_INSTALLSERVICES,
ACTION_InstallServices, szDeleteServices },
- { szInstallSFPCatalogFile, IDS_DESC_INSTALLSFPCATALOGFILE,
IDS_TEMP_INSTALLSFPCATALOGFILE, ACTION_InstallSFPCatalogFile, NULL },
- { szInstallValidate, IDS_DESC_INSTALLVALIDATE, 0, ACTION_InstallValidate, NULL },
- { szIsolateComponents, 0, 0, ACTION_IsolateComponents, NULL },
- { szLaunchConditions, IDS_DESC_LAUNCHCONDITIONS, 0, ACTION_LaunchConditions, NULL },
- { szMigrateFeatureStates, IDS_DESC_MIGRATEFEATURESTATES,
IDS_TEMP_MIGRATEFEATURESTATES, ACTION_MigrateFeatureStates, NULL },
- { szMoveFiles, IDS_DESC_MOVEFILES, IDS_TEMP_MOVEFILES, ACTION_MoveFiles, NULL },
- { szMsiPublishAssemblies, IDS_DESC_MSIPUBLISHASSEMBLIES,
IDS_TEMP_MSIPUBLISHASSEMBLIES, ACTION_MsiPublishAssemblies, szMsiUnpublishAssemblies },
- { szMsiUnpublishAssemblies, IDS_DESC_MSIUNPUBLISHASSEMBLIES,
IDS_TEMP_MSIUNPUBLISHASSEMBLIES, ACTION_MsiUnpublishAssemblies, szMsiPublishAssemblies },
- { szPatchFiles, IDS_DESC_PATCHFILES, IDS_TEMP_PATCHFILES, ACTION_PatchFiles, NULL },
- { szProcessComponents, IDS_DESC_PROCESSCOMPONENTS, 0, ACTION_ProcessComponents,
szProcessComponents },
- { szPublishComponents, IDS_DESC_PUBLISHCOMPONENTS, IDS_TEMP_PUBLISHCOMPONENTS,
ACTION_PublishComponents, szUnpublishComponents },
- { szPublishFeatures, IDS_DESC_PUBLISHFEATURES, IDS_TEMP_PUBLISHFEATURES,
ACTION_PublishFeatures, szUnpublishFeatures },
- { szPublishProduct, IDS_DESC_PUBLISHPRODUCT, 0, ACTION_PublishProduct,
szUnpublishProduct },
- { szRegisterClassInfo, IDS_DESC_REGISTERCLASSINFO, IDS_TEMP_REGISTERCLASSINFO,
ACTION_RegisterClassInfo, szUnregisterClassInfo },
- { szRegisterComPlus, IDS_DESC_REGISTERCOMPLUS, IDS_TEMP_REGISTERCOMPLUS,
ACTION_RegisterComPlus, szUnregisterComPlus },
- { szRegisterExtensionInfo, IDS_DESC_REGISTEREXTENSIONINFO, 0,
ACTION_RegisterExtensionInfo, szUnregisterExtensionInfo },
- { szRegisterFonts, IDS_DESC_REGISTERFONTS, IDS_TEMP_REGISTERFONTS,
ACTION_RegisterFonts, szUnregisterFonts },
- { szRegisterMIMEInfo, IDS_DESC_REGISTERMIMEINFO, IDS_TEMP_REGISTERMIMEINFO,
ACTION_RegisterMIMEInfo, szUnregisterMIMEInfo },
- { szRegisterProduct, IDS_DESC_REGISTERPRODUCT, 0, ACTION_RegisterProduct, NULL },
- { szRegisterProgIdInfo, IDS_DESC_REGISTERPROGIDINFO, IDS_TEMP_REGISTERPROGIDINFO,
ACTION_RegisterProgIdInfo, szUnregisterProgIdInfo },
- { szRegisterTypeLibraries, IDS_DESC_REGISTERTYPELIBRARIES,
IDS_TEMP_REGISTERTYPELIBRARIES, ACTION_RegisterTypeLibraries, szUnregisterTypeLibraries
},
- { szRegisterUser, IDS_DESC_REGISTERUSER, 0, ACTION_RegisterUser, NULL },
- { szRemoveDuplicateFiles, IDS_DESC_REMOVEDUPLICATEFILES,
IDS_TEMP_REMOVEDUPLICATEFILES, ACTION_RemoveDuplicateFiles, szDuplicateFiles },
- { szRemoveEnvironmentStrings, IDS_DESC_REMOVEENVIRONMENTSTRINGS,
IDS_TEMP_REMOVEENVIRONMENTSTRINGS, ACTION_RemoveEnvironmentStrings,
szWriteEnvironmentStrings },
- { szRemoveExistingProducts, IDS_DESC_REMOVEEXISTINGPRODUCTS,
IDS_TEMP_REMOVEEXISTINGPRODUCTS, ACTION_RemoveExistingProducts, NULL },
- { szRemoveFiles, IDS_DESC_REMOVEFILES, IDS_TEMP_REMOVEFILES, ACTION_RemoveFiles,
szInstallFiles },
- { szRemoveFolders, IDS_DESC_REMOVEFOLDERS, IDS_TEMP_REMOVEFOLDERS,
ACTION_RemoveFolders, szCreateFolders },
- { szRemoveIniValues, IDS_DESC_REMOVEINIVALUES, IDS_TEMP_REMOVEINIVALUES,
ACTION_RemoveIniValues, szWriteIniValues },
- { szRemoveODBC, IDS_DESC_REMOVEODBC, 0, ACTION_RemoveODBC, szInstallODBC },
- { szRemoveRegistryValues, IDS_DESC_REMOVEREGISTRYVALUES,
IDS_TEMP_REMOVEREGISTRYVALUES, ACTION_RemoveRegistryValues, szWriteRegistryValues },
- { szRemoveShortcuts, IDS_DESC_REMOVESHORTCUTS, IDS_TEMP_REMOVESHORTCUTS,
ACTION_RemoveShortcuts, szCreateShortcuts },
- { szResolveSource, 0, 0, ACTION_ResolveSource, NULL },
- { szRMCCPSearch, IDS_DESC_RMCCPSEARCH, 0, ACTION_RMCCPSearch, NULL },
- { szScheduleReboot, 0, 0, ACTION_ScheduleReboot, NULL },
- { szSelfRegModules, IDS_DESC_SELFREGMODULES, IDS_TEMP_SELFREGMODULES,
ACTION_SelfRegModules, szSelfUnregModules },
- { szSelfUnregModules, IDS_DESC_SELFUNREGMODULES, IDS_TEMP_SELFUNREGMODULES,
ACTION_SelfUnregModules, szSelfRegModules },
- { szSetODBCFolders, IDS_DESC_SETODBCFOLDERS, 0, ACTION_SetODBCFolders, NULL },
- { szStartServices, IDS_DESC_STARTSERVICES, IDS_TEMP_STARTSERVICES,
ACTION_StartServices, szStopServices },
- { szStopServices, IDS_DESC_STOPSERVICES, IDS_TEMP_STOPSERVICES, ACTION_StopServices,
szStartServices },
- { szUnpublishComponents, IDS_DESC_UNPUBLISHCOMPONENTS, IDS_TEMP_UNPUBLISHCOMPONENTS,
ACTION_UnpublishComponents, szPublishComponents },
- { szUnpublishFeatures, IDS_DESC_UNPUBLISHFEATURES, IDS_TEMP_UNPUBLISHFEATURES,
ACTION_UnpublishFeatures, szPublishFeatures },
- { szUnpublishProduct, IDS_DESC_UNPUBLISHPRODUCT, 0, ACTION_UnpublishProduct, NULL },
/* for rollback only */
- { szUnregisterClassInfo, IDS_DESC_UNREGISTERCLASSINFO, IDS_TEMP_UNREGISTERCLASSINFO,
ACTION_UnregisterClassInfo, szRegisterClassInfo },
- { szUnregisterComPlus, IDS_DESC_UNREGISTERCOMPLUS, IDS_TEMP_UNREGISTERCOMPLUS,
ACTION_UnregisterComPlus, szRegisterComPlus },
- { szUnregisterExtensionInfo, IDS_DESC_UNREGISTEREXTENSIONINFO,
IDS_TEMP_UNREGISTEREXTENSIONINFO, ACTION_UnregisterExtensionInfo, szRegisterExtensionInfo
},
- { szUnregisterFonts, IDS_DESC_UNREGISTERFONTS, IDS_TEMP_UNREGISTERFONTS,
ACTION_UnregisterFonts, szRegisterFonts },
- { szUnregisterMIMEInfo, IDS_DESC_UNREGISTERMIMEINFO, IDS_TEMP_UNREGISTERMIMEINFO,
ACTION_UnregisterMIMEInfo, szRegisterMIMEInfo },
- { szUnregisterProgIdInfo, IDS_DESC_UNREGISTERPROGIDINFO,
IDS_TEMP_UNREGISTERPROGIDINFO, ACTION_UnregisterProgIdInfo, szRegisterProgIdInfo },
- { szUnregisterTypeLibraries, IDS_DESC_UNREGISTERTYPELIBRARIES,
IDS_TEMP_UNREGISTERTYPELIBRARIES, ACTION_UnregisterTypeLibraries, szRegisterTypeLibraries
},
- { szValidateProductID, 0, 0, ACTION_ValidateProductID, NULL },
- { szWriteEnvironmentStrings, IDS_DESC_WRITEENVIRONMENTSTRINGS,
IDS_TEMP_WRITEENVIRONMENTSTRINGS, ACTION_WriteEnvironmentStrings,
szRemoveEnvironmentStrings },
- { szWriteIniValues, IDS_DESC_WRITEINIVALUES, IDS_TEMP_WRITEINIVALUES,
ACTION_WriteIniValues, szRemoveIniValues },
- { szWriteRegistryValues, IDS_DESC_WRITEREGISTRYVALUES, IDS_TEMP_WRITEREGISTRYVALUES,
ACTION_WriteRegistryValues, szRemoveRegistryValues },
- { szINSTALL, 0, 0, ACTION_INSTALL, NULL },
+ { L"AllocateRegistrySpace", IDS_DESC_ALLOCATEREGISTRYSPACE,
IDS_TEMP_ALLOCATEREGISTRYSPACE, ACTION_AllocateRegistrySpace, NULL },
+ { L"AppSearch", IDS_DESC_APPSEARCH, IDS_TEMP_APPSEARCH, ACTION_AppSearch,
NULL },
+ { L"BindImage", IDS_DESC_BINDIMAGE, IDS_TEMP_BINDIMAGE, ACTION_BindImage,
NULL },
+ { L"CCPSearch", IDS_DESC_CCPSEARCH, 0, ACTION_CCPSearch, NULL },
+ { L"CostFinalize", IDS_DESC_COSTFINALIZE, 0, ACTION_CostFinalize, NULL },
+ { L"CostInitialize", IDS_DESC_COSTINITIALIZE, 0, ACTION_CostInitialize,
NULL },
+ { L"CreateFolders", IDS_DESC_CREATEFOLDERS, IDS_TEMP_CREATEFOLDERS,
ACTION_CreateFolders, L"RemoveFolders" },
+ { L"CreateShortcuts", IDS_DESC_CREATESHORTCUTS, IDS_TEMP_CREATESHORTCUTS,
ACTION_CreateShortcuts, L"RemoveShortcuts" },
+ { L"DeleteServices", IDS_DESC_DELETESERVICES, IDS_TEMP_DELETESERVICES,
ACTION_DeleteServices, L"InstallServices" },
+ { L"DisableRollback", 0, 0, ACTION_DisableRollback, NULL },
+ { L"DuplicateFiles", IDS_DESC_DUPLICATEFILES, IDS_TEMP_DUPLICATEFILES,
ACTION_DuplicateFiles, L"RemoveDuplicateFiles" },
+ { L"ExecuteAction", 0, 0, ACTION_ExecuteAction, NULL },
+ { L"FileCost", IDS_DESC_FILECOST, 0, ACTION_FileCost, NULL },
+ { L"FindRelatedProducts", IDS_DESC_FINDRELATEDPRODUCTS,
IDS_TEMP_FINDRELATEDPRODUCTS, ACTION_FindRelatedProducts, NULL },
+ { L"ForceReboot", 0, 0, ACTION_ForceReboot, NULL },
+ { L"InstallAdminPackage", IDS_DESC_INSTALLADMINPACKAGE,
IDS_TEMP_INSTALLADMINPACKAGE, ACTION_InstallAdminPackage, NULL },
+ { L"InstallExecute", 0, 0, ACTION_InstallExecute, NULL },
+ { L"InstallExecuteAgain", 0, 0, ACTION_InstallExecute, NULL },
+ { L"InstallFiles", IDS_DESC_INSTALLFILES, IDS_TEMP_INSTALLFILES,
ACTION_InstallFiles, L"RemoveFiles" },
+ { L"InstallFinalize", 0, 0, ACTION_InstallFinalize, NULL },
+ { L"InstallInitialize", 0, 0, ACTION_InstallInitialize, NULL },
+ { L"InstallODBC", IDS_DESC_INSTALLODBC, 0, ACTION_InstallODBC,
L"RemoveODBC" },
+ { L"InstallServices", IDS_DESC_INSTALLSERVICES, IDS_TEMP_INSTALLSERVICES,
ACTION_InstallServices, L"DeleteServices" },
+ { L"InstallSFPCatalogFile", IDS_DESC_INSTALLSFPCATALOGFILE,
IDS_TEMP_INSTALLSFPCATALOGFILE, ACTION_InstallSFPCatalogFile, NULL },
+ { L"InstallValidate", IDS_DESC_INSTALLVALIDATE, 0, ACTION_InstallValidate,
NULL },
+ { L"IsolateComponents", 0, 0, ACTION_IsolateComponents, NULL },
+ { L"LaunchConditions", IDS_DESC_LAUNCHCONDITIONS, 0,
ACTION_LaunchConditions, NULL },
+ { L"MigrateFeutureStates", IDS_DESC_MIGRATEFEATURESTATES,
IDS_TEMP_MIGRATEFEATURESTATES, ACTION_MigrateFeatureStates, NULL },
+ { L"MoveFiles", IDS_DESC_MOVEFILES, IDS_TEMP_MOVEFILES, ACTION_MoveFiles,
NULL },
+ { L"MsiPublishAssemblies", IDS_DESC_MSIPUBLISHASSEMBLIES,
IDS_TEMP_MSIPUBLISHASSEMBLIES, ACTION_MsiPublishAssemblies,
L"MsiUnpublishAssemblies" },
+ { L"MsiUnpublishAssemblies", IDS_DESC_MSIUNPUBLISHASSEMBLIES,
IDS_TEMP_MSIUNPUBLISHASSEMBLIES, ACTION_MsiUnpublishAssemblies,
L"MsiPublishAssemblies" },
+ { L"PatchFiles", IDS_DESC_PATCHFILES, IDS_TEMP_PATCHFILES,
ACTION_PatchFiles, NULL },
+ { L"ProcessComponents", IDS_DESC_PROCESSCOMPONENTS, 0,
ACTION_ProcessComponents, L"ProcessComponents" },
+ { L"PublishComponents", IDS_DESC_PUBLISHCOMPONENTS,
IDS_TEMP_PUBLISHCOMPONENTS, ACTION_PublishComponents, L"UnpublishComponents" },
+ { L"PublishFeatures", IDS_DESC_PUBLISHFEATURES, IDS_TEMP_PUBLISHFEATURES,
ACTION_PublishFeatures, L"UnpublishFeatures" },
+ { L"PublishProduct", IDS_DESC_PUBLISHPRODUCT, 0, ACTION_PublishProduct,
L"UnpublishProduct" },
+ { L"RegisterClassInfo", IDS_DESC_REGISTERCLASSINFO,
IDS_TEMP_REGISTERCLASSINFO, ACTION_RegisterClassInfo, L"UnregisterClassInfo" },
+ { L"RegisterComPlus", IDS_DESC_REGISTERCOMPLUS, IDS_TEMP_REGISTERCOMPLUS,
ACTION_RegisterComPlus, L"UnregisterComPlus" },
+ { L"RegisterExtensionInfo", IDS_DESC_REGISTEREXTENSIONINFO, 0,
ACTION_RegisterExtensionInfo, L"UnregisterExtensionInfo" },
+ { L"RegisterFonts", IDS_DESC_REGISTERFONTS, IDS_TEMP_REGISTERFONTS,
ACTION_RegisterFonts, L"UnregisterFonts" },
+ { L"RegisterMIMEInfo", IDS_DESC_REGISTERMIMEINFO,
IDS_TEMP_REGISTERMIMEINFO, ACTION_RegisterMIMEInfo, L"UnregisterMIMEInfo" },
+ { L"RegisterProduct", IDS_DESC_REGISTERPRODUCT, 0, ACTION_RegisterProduct,
NULL },
+ { L"RegisterProgIdInfo", IDS_DESC_REGISTERPROGIDINFO,
IDS_TEMP_REGISTERPROGIDINFO, ACTION_RegisterProgIdInfo, L"UnregisterProgIdInfo"
},
+ { L"RegisterTypeLibraries", IDS_DESC_REGISTERTYPELIBRARIES,
IDS_TEMP_REGISTERTYPELIBRARIES, ACTION_RegisterTypeLibraries,
L"UnregisterTypeLibraries" },
+ { L"RegisterUser", IDS_DESC_REGISTERUSER, 0, ACTION_RegisterUser, NULL },
+ { L"RemoveDuplicateFiles", IDS_DESC_REMOVEDUPLICATEFILES,
IDS_TEMP_REMOVEDUPLICATEFILES, ACTION_RemoveDuplicateFiles, L"DuplicateFiles"
},
+ { L"RemoveEnvironmentStrings", IDS_DESC_REMOVEENVIRONMENTSTRINGS,
IDS_TEMP_REMOVEENVIRONMENTSTRINGS, ACTION_RemoveEnvironmentStrings,
L"WriteEnvironmentStrings" },
+ { L"RemoveExistingProducts", IDS_DESC_REMOVEEXISTINGPRODUCTS,
IDS_TEMP_REMOVEEXISTINGPRODUCTS, ACTION_RemoveExistingProducts, NULL },
+ { L"RemoveFiles", IDS_DESC_REMOVEFILES, IDS_TEMP_REMOVEFILES,
ACTION_RemoveFiles, L"InstallFiles" },
+ { L"RemoveFolders", IDS_DESC_REMOVEFOLDERS, IDS_TEMP_REMOVEFOLDERS,
ACTION_RemoveFolders, L"CreateFolders" },
+ { L"RemoveIniValues", IDS_DESC_REMOVEINIVALUES, IDS_TEMP_REMOVEINIVALUES,
ACTION_RemoveIniValues, L"WriteIniValues" },
+ { L"RemoveODBC", IDS_DESC_REMOVEODBC, 0, ACTION_RemoveODBC,
L"InstallODBC" },
+ { L"RemoveRegistryValues", IDS_DESC_REMOVEREGISTRYVALUES,
IDS_TEMP_REMOVEREGISTRYVALUES, ACTION_RemoveRegistryValues,
L"WriteRegistryValues" },
+ { L"RemoveShortcuts", IDS_DESC_REMOVESHORTCUTS, IDS_TEMP_REMOVESHORTCUTS,
ACTION_RemoveShortcuts, L"CreateShortcuts" },
+ { L"ResolveSource", 0, 0, ACTION_ResolveSource, NULL },
+ { L"RMCCPSearch", IDS_DESC_RMCCPSEARCH, 0, ACTION_RMCCPSearch, NULL },
+ { L"ScheduleReboot", 0, 0, ACTION_ScheduleReboot, NULL },
+ { L"SelfRegModules", IDS_DESC_SELFREGMODULES, IDS_TEMP_SELFREGMODULES,
ACTION_SelfRegModules, L"SelfUnregModules" },
+ { L"SelfUnregModules", IDS_DESC_SELFUNREGMODULES,
IDS_TEMP_SELFUNREGMODULES, ACTION_SelfUnregModules, L"SelfRegModules" },
+ { L"SetODBCFolders", IDS_DESC_SETODBCFOLDERS, 0, ACTION_SetODBCFolders,
NULL },
+ { L"StartServices", IDS_DESC_STARTSERVICES, IDS_TEMP_STARTSERVICES,
ACTION_StartServices, L"StopServices" },
+ { L"StopServices", IDS_DESC_STOPSERVICES, IDS_TEMP_STOPSERVICES,
ACTION_StopServices, L"StartServices" },
+ { L"UnpublishComponents", IDS_DESC_UNPUBLISHCOMPONENTS,
IDS_TEMP_UNPUBLISHCOMPONENTS, ACTION_UnpublishComponents, L"PublishComponents"
},
+ { L"UnpublishFeatures", IDS_DESC_UNPUBLISHFEATURES,
IDS_TEMP_UNPUBLISHFEATURES, ACTION_UnpublishFeatures, L"PublishFeatures" },
+ { L"UnpublishProduct", IDS_DESC_UNPUBLISHPRODUCT, 0,
ACTION_UnpublishProduct, NULL }, /* for rollback only */
+ { L"UnregisterClassInfo", IDS_DESC_UNREGISTERCLASSINFO,
IDS_TEMP_UNREGISTERCLASSINFO, ACTION_UnregisterClassInfo, L"RegisterClassInfo"
},
+ { L"UnregisterComPlus", IDS_DESC_UNREGISTERCOMPLUS,
IDS_TEMP_UNREGISTERCOMPLUS, ACTION_UnregisterComPlus, L"RegisterComPlus" },
+ { L"UnregisterExtensionInfo", IDS_DESC_UNREGISTEREXTENSIONINFO,
IDS_TEMP_UNREGISTEREXTENSIONINFO, ACTION_UnregisterExtensionInfo,
L"RegisterExtensionInfo" },
+ { L"UnregisterFonts", IDS_DESC_UNREGISTERFONTS, IDS_TEMP_UNREGISTERFONTS,
ACTION_UnregisterFonts, L"RegisterFonts" },
+ { L"UnregisterMIMEInfo", IDS_DESC_UNREGISTERMIMEINFO,
IDS_TEMP_UNREGISTERMIMEINFO, ACTION_UnregisterMIMEInfo, L"RegisterMIMEInfo" },
+ { L"UnregisterProgIdInfo", IDS_DESC_UNREGISTERPROGIDINFO,
IDS_TEMP_UNREGISTERPROGIDINFO, ACTION_UnregisterProgIdInfo,
L"RegisterProgIdInfo" },
+ { L"UnregisterTypeLibraries", IDS_DESC_UNREGISTERTYPELIBRARIES,
IDS_TEMP_UNREGISTERTYPELIBRARIES, ACTION_UnregisterTypeLibraries,
L"RegisterTypeLibraries" },
+ { L"ValidateProductID", 0, 0, ACTION_ValidateProductID, NULL },
+ { L"WriteEnvironmentStrings", IDS_DESC_WRITEENVIRONMENTSTRINGS,
IDS_TEMP_WRITEENVIRONMENTSTRINGS, ACTION_WriteEnvironmentStrings,
L"RemoveEnvironmentStrings" },
+ { L"WriteIniValues", IDS_DESC_WRITEINIVALUES, IDS_TEMP_WRITEINIVALUES,
ACTION_WriteIniValues, L"RemoveIniValues" },
+ { L"WriteRegistryValues", IDS_DESC_WRITEREGISTRYVALUES,
IDS_TEMP_WRITEREGISTRYVALUES, ACTION_WriteRegistryValues,
L"RemoveRegistryValues" },
+ { L"INSTALL", 0, 0, ACTION_INSTALL, NULL },
{ 0 }
};
@@ -8111,21 +7612,10 @@ static UINT ACTION_PerformActionSequence(MSIPACKAGE *package, UINT
seq)
UINT rc = ERROR_SUCCESS;
MSIRECORD *row;
- static const WCHAR query[] =
- {'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','I','n','s','t','a','l','l','E','x','e','c','u','t','e',
-
'S','e','q','u','e','n','c','e','`','
', 'W','H','E','R','E',' ',
-
'`','S','e','q','u','e','n','c','e','`','
', '=',' ','%','i',0};
- static const WCHAR ui_query[] =
- {'S','E','L','E','C','T','
','*',' ','F','R','O','M','
',
-
'`','I','n','s','t','a','l','l','U','I','S','e','q','u','e','n','c','e',
- '`', ' ',
'W','H','E','R','E','
','`','S','e','q','u','e','n','c','e','`',
- ' ', '=',' ','%','i',0};
-
if (needs_ui_sequence(package))
- row = MSI_QueryGetRecord(package->db, ui_query, seq);
+ row = MSI_QueryGetRecord(package->db, L"SELECT * FROM `InstallUISequence`
WHERE `Sequence` = %d", seq);
else
- row = MSI_QueryGetRecord(package->db, query, seq);
+ row = MSI_QueryGetRecord(package->db, L"SELECT * FROM
`InstallExecuteSequence` WHERE `Sequence` = %d", seq);
if (row)
{
@@ -8202,8 +7692,6 @@ static void stop_dummy_thread(struct dummy_thread *info)
UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
LPCWSTR szCommandLine )
{
- static const WCHAR szDisableRollback[] =
{'D','I','S','A','B','L','E','R','O','L','L','B','A','C','K',0};
- static const WCHAR szAction[] =
{'A','C','T','I','O','N',0};
WCHAR *reinstall = NULL, *productcode, *action;
struct dummy_thread thread_info = {NULL, NULL, NULL};
UINT rc;
@@ -8226,7 +7714,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR
szPackagePath,
msi_free(dir);
dir = msi_alloc(MAX_PATH * sizeof(WCHAR));
GetCurrentDirectoryW(MAX_PATH, dir);
- lstrcatW(dir, szBackSlash);
+ lstrcatW(dir, L"\\");
file = szPackagePath;
}
@@ -8252,9 +7740,9 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR
szPackagePath,
msi_apply_transforms( package );
msi_apply_patches( package );
- if (msi_get_property( package->db, szAction, NULL, &len ))
- msi_set_property( package->db, szAction, szINSTALL, -1 );
- action = msi_dup_property( package->db, szAction );
+ if (msi_get_property( package->db, L"ACTION", NULL, &len ))
+ msi_set_property( package->db, L"ACTION", L"INSTALL", -1
);
+ action = msi_dup_property( package->db, L"ACTION" );
CharUpperW(action);
msi_set_original_database_property( package->db, szPackagePath );
@@ -8264,7 +7752,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR
szPackagePath,
start_dummy_thread(&thread_info);
- productcode = msi_dup_property( package->db, szProductCode );
+ productcode = msi_dup_property( package->db, L"ProductCode" );
if (wcsicmp( productcode, package->ProductCode ))
{
TRACE( "product code changed %s -> %s\n",
debugstr_w(package->ProductCode), debugstr_w(productcode) );
@@ -8273,10 +7761,10 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR
szPackagePath,
}
else msi_free( productcode );
- if (msi_get_property_int( package->db, szDisableRollback, 0 ))
+ if (msi_get_property_int( package->db, L"DISABLEROLLBACK", 0 ))
{
TRACE("disabling rollback\n");
- msi_set_property( package->db, szRollbackDisabled, szOne, -1 );
+ msi_set_property( package->db, L"RollbackDisabled", L"1",
-1 );
}
rc = ACTION_PerformAction(package, action);
@@ -8291,7 +7779,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR
szPackagePath,
else /* failed */
{
ACTION_PerformActionSequence(package, -3);
- if (!msi_get_property_int( package->db, szRollbackDisabled, 0 ))
+ if (!msi_get_property_int( package->db, L"RollbackDisabled", 0 ))
{
package->need_rollback = TRUE;
}
@@ -8302,7 +7790,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR
szPackagePath,
stop_dummy_thread(&thread_info);
- if (package->need_rollback && !(reinstall = msi_dup_property(
package->db, szReinstall )))
+ if (package->need_rollback && !(reinstall = msi_dup_property(
package->db, L"REINSTALL" )))
{
WARN("installation failed, running rollback script\n");
execute_script( package, SCRIPT_ROLLBACK );
diff --git a/sdk/include/reactos/wine/test.h b/sdk/include/reactos/wine/test.h
index 28d993217c9..423d7ac3637 100644
--- a/sdk/include/reactos/wine/test.h
+++ b/sdk/include/reactos/wine/test.h
@@ -85,6 +85,7 @@ extern const char *wine_dbgstr_rect( const RECT *rect );
extern const char *wine_dbgstr_longlong( ULONGLONG ll );
#endif
static inline const char *debugstr_a( const char *s ) { return wine_dbgstr_an( s, -1 );
}
+static inline const char *wine_dbgstr_a( const char *s ) { return wine_dbgstr_an( s, -1
); }
static inline const char *wine_dbgstr_w( const WCHAR *s ) { return wine_dbgstr_wn( s, -1
); }
/* strcmpW is available for tests compiled under Wine, but not in standalone