Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/msi/action.c | 1340 ++++++++++++++-------------------------------
1 file changed, 407 insertions(+), 933 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index d02860e4d71..ed1d0c8ffcc 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -46,126 +46,12 @@
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};
-
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);
@@ -366,7 +252,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 );
@@ -447,14 +333,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 );
@@ -467,7 +349,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, '/' )))
@@ -480,18 +362,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 );
@@ -509,7 +391,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
@@ -562,17 +444,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 );
@@ -583,12 +460,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;
@@ -600,12 +471,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);
}
@@ -614,18 +486,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);
}
@@ -806,16 +675,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;
@@ -888,16 +754,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;
@@ -938,16 +801,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;
@@ -1008,13 +868,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;
@@ -1029,7 +884,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));
@@ -1040,7 +895,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);
@@ -1053,7 +908,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;
@@ -1087,17 +943,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;
@@ -1125,17 +977,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;
@@ -1161,13 +1009,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");
@@ -1190,7 +1033,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 );
@@ -1209,7 +1052,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 );
@@ -1241,23 +1084,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;
@@ -1281,14 +1119,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;
@@ -1299,13 +1133,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;
@@ -1355,17 +1185,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;
@@ -1419,14 +1245,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 ))
{
@@ -1446,7 +1269,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;
@@ -1467,9 +1290,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)
@@ -1527,16 +1350,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;
@@ -1553,8 +1373,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 );
@@ -1622,7 +1442,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;
@@ -1687,8 +1507,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)
@@ -1704,7 +1524,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;
@@ -1741,12 +1561,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
@@ -1765,14 +1579,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;
}
@@ -1824,9 +1638,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 )
{
@@ -1847,7 +1661,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 )
{
@@ -2141,7 +1955,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 );
@@ -2153,7 +1967,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;
@@ -2207,7 +2021,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;
@@ -2345,7 +2159,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;
@@ -2364,12 +2178,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 )))
@@ -2412,33 +2226,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 )
@@ -2457,11 +2251,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 );
@@ -2474,22 +2268,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];
@@ -2497,16 +2290,16 @@ 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 );
+ swprintf( buf, ARRAY_SIZE(buf), L"%lu", free.QuadPart / 512 );
+ 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 );
+ swprintf( buf, ARRAY_SIZE(buf), L"%lu", required / 512 );
+ 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 );
+ swprintf( buf, ARRAY_SIZE(buf), L"%lu", (free.QuadPart - required) / 512 );
+ msi_set_property( package->db, L"PrimaryVolumeSpaceRemaining", buf, -1 );
+ msi_set_property( package->db, L"PrimaryVolumePath", primary_folder, 2 );
}
msi_free( primary_folder );
}
@@ -2514,8 +2307,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;
}
@@ -2636,32 +2429,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);
@@ -2993,16 +2786,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;
@@ -3225,19 +3015,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 );
@@ -3245,7 +3029,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 );
@@ -3264,9 +3048,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;
@@ -3276,7 +3057,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 );
@@ -3305,24 +3086,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);
}
@@ -3334,15 +3110,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;
@@ -3359,18 +3132,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;
@@ -3387,9 +3154,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);
@@ -3414,11 +3181,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 )
@@ -3514,13 +3278,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;
@@ -3540,7 +3303,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 );
@@ -3569,7 +3332,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);
@@ -3578,12 +3341,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 );
@@ -3596,21 +3354,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 "
+ "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);
@@ -3632,7 +3383,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 );
@@ -3643,7 +3394,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 );
@@ -3682,8 +3433,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))
@@ -3699,7 +3449,7 @@ 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);
+ swprintf(tl_struct->path, sz, L"%s\\%d", tl_struct->source, lpszName);
}
TRACE("trying %s\n", debugstr_w(tl_struct->path));
@@ -3785,7 +3535,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)
@@ -3828,16 +3578,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;
@@ -3892,16 +3639,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;
@@ -3912,7 +3656,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;
@@ -3930,11 +3673,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 );
@@ -3944,19 +3687,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 );
@@ -4082,17 +3823,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;
@@ -4135,16 +3873,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;
@@ -4204,13 +3939,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);
@@ -4229,7 +3961,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;
@@ -4244,13 +3976,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;
@@ -4277,15 +4009,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;
@@ -4293,13 +4016,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);
@@ -4308,7 +4031,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);
@@ -4316,10 +4039,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;
@@ -4336,7 +4059,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;
@@ -4388,7 +4111,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;
@@ -4401,7 +4123,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;
@@ -4439,7 +4161,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)
@@ -4455,7 +4177,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)
{
@@ -4463,7 +4185,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)
@@ -4471,12 +4193,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;
@@ -4497,7 +4219,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))
{
@@ -4598,7 +4320,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)
{
@@ -4690,16 +4412,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;
@@ -4833,19 +4552,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 );
@@ -4853,7 +4566,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 );
@@ -4866,10 +4579,8 @@ static UINT ACTION_RemoveIniValues( MSIPACKAGE *package )
static void register_dll( const WCHAR *dll, BOOL unregister )
{
- 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\"";
PROCESS_INFORMATION pi;
STARTUPINFOW si;
WCHAR *cmd;
@@ -4924,16 +4635,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;
@@ -4977,16 +4685,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;
@@ -5002,7 +4707,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;
@@ -5064,9 +4769,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 );
@@ -5078,8 +4782,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
{
@@ -5145,7 +4849,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;
@@ -5160,91 +4864,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;
@@ -5262,55 +4896,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);
@@ -5332,10 +4958,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;
@@ -5355,7 +4981,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 );
@@ -5408,12 +5034,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 );
@@ -5432,7 +5056,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;
@@ -5530,44 +5154,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);
@@ -5631,29 +5235,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))
{
@@ -5690,13 +5292,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);
@@ -5706,8 +5306,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;
@@ -5753,15 +5351,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)
{
@@ -5779,7 +5377,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)
{
@@ -5797,7 +5395,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);
@@ -5826,7 +5424,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;
@@ -5838,7 +5436,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;
@@ -5861,7 +5458,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;
}
@@ -5971,16 +5568,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;
@@ -5991,12 +5585,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;
@@ -6026,7 +5614,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 );
@@ -6046,16 +5634,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;
@@ -6066,10 +5651,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;
@@ -6126,7 +5707,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");
@@ -6156,7 +5737,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,
@@ -6197,16 +5778,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;
@@ -6222,10 +5800,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;
@@ -6240,7 +5816,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';
@@ -6371,16 +5947,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;
@@ -6537,16 +6110,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;
@@ -6623,16 +6193,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;
@@ -6653,13 +6220,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)
@@ -6685,10 +6245,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)
@@ -6698,16 +6258,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';
@@ -6752,11 +6312,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)
@@ -6782,9 +6337,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)
@@ -6794,12 +6349,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';
@@ -6840,9 +6395,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)
@@ -6862,12 +6414,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))
@@ -6887,22 +6439,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);
@@ -6910,7 +6453,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);
@@ -6918,7 +6461,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);
@@ -7018,9 +6561,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)
@@ -7040,14 +6580,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 ))
@@ -7068,22 +6608,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 );
@@ -7091,7 +6622,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 );
@@ -7099,7 +6630,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 );
@@ -7124,10 +6655,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)
@@ -7158,24 +6686,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 */;
@@ -7205,26 +6733,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;
}
@@ -7423,16 +6943,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;
@@ -7568,16 +7085,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;
@@ -7591,18 +7105,18 @@ 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) );
- r = msi_set_property( package->db, szProductID, key, -1 );
+ r = msi_set_property( package->db, L"ProductID", key, -1 );
}
msi_free( template );
msi_free( key );
@@ -7623,10 +7137,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);
@@ -7642,7 +7154,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;
}
@@ -7654,16 +7166,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;
@@ -7673,7 +7179,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;
@@ -7688,13 +7194,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;
@@ -7709,7 +7212,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) )))
{
@@ -7717,7 +7220,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 );
@@ -7734,12 +7237,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 );
@@ -7787,23 +7288,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 );
@@ -7871,13 +7369,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 );
@@ -7888,13 +7383,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);
@@ -7908,33 +7401,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
@@ -7947,83 +7434,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 }
};
@@ -8093,21 +7580,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)
{
@@ -8148,8 +7624,6 @@ static UINT ACTION_PerformActionSequence(MSIPACKAGE *package, UINT seq)
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;
UINT rc;
DWORD len = 0;
@@ -8171,7 +7645,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;
}
@@ -8197,9 +7671,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 );
@@ -8207,7 +7681,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
msi_adjust_privilege_properties( package );
msi_set_context( package );
- 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) );
@@ -8216,10 +7690,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);
@@ -8234,7 +7708,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;
}
@@ -8243,7 +7717,7 @@ UINT MSI_InstallPackage( MSIPACKAGE *package, LPCWSTR szPackagePath,
/* finish up running custom actions */
ACTION_FinishCustomActions(package);
- 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 );
--
2.28.0