end = strstrW(beg, sep);
*end = '\0';
- MSI_SetPropertyW(package, szCustomActionData, beg);
+ msi_set_property(package->db, szCustomActionData, beg);
beg = end + 3;
end = strstrW(beg, sep);
*end = '\0';
- MSI_SetPropertyW(package, szUserSID, beg);
+ msi_set_property(package->db, szUserSID, beg);
beg = end + 3;
end = strchrW(beg, ']');
*end = '\0';
- MSI_SetPropertyW(package, szProductCode, beg);
+ msi_set_property(package->db, szProductCode, beg);
}
UINT ACTION_CustomAction(MSIPACKAGE *package, LPCWSTR action, UINT script, BOOL execute)
if (type & msidbCustomActionTypeNoImpersonate)
WARN("msidbCustomActionTypeNoImpersonate not handled\n");
- if (type & msidbCustomActionTypeRollback)
- {
- FIXME("Rollback only action... rollbacks not supported yet\n");
- schedule_action(package, ROLLBACK_SCRIPT, action);
- rc = ERROR_SUCCESS;
- goto end;
- }
if (!execute)
{
- LPWSTR actiondata = msi_dup_property(package, action);
- LPWSTR usersid = msi_dup_property(package, szUserSID);
- LPWSTR prodcode = msi_dup_property(package, szProductCode);
+ LPWSTR actiondata = msi_dup_property(package->db, action);
+ LPWSTR usersid = msi_dup_property(package->db, szUserSID);
+ LPWSTR prodcode = msi_dup_property(package->db, szProductCode);
LPWSTR deferred = msi_get_deferred_action(action, actiondata, usersid, prodcode);
if (type & msidbCustomActionTypeCommit)
{
- TRACE("Deferring Commit Action!\n");
+ TRACE("Deferring commit action\n");
schedule_action(package, COMMIT_SCRIPT, deferred);
}
+ else if (type & msidbCustomActionTypeRollback)
+ {
+ FIXME("Deferring rollback only action... rollbacks not supported yet\n");
+ schedule_action(package, ROLLBACK_SCRIPT, deferred);
+ }
else
{
- TRACE("Deferring Action!\n");
+ TRACE("Deferring action\n");
schedule_action(package, INSTALL_SCRIPT, deferred);
}
}
else
{
- LPWSTR actiondata = msi_dup_property( package, action );
+ LPWSTR actiondata = msi_dup_property( package->db, action );
- switch (script)
- {
- case INSTALL_SCRIPT:
+ if (type & msidbCustomActionTypeInScript)
package->scheduled_action_running = TRUE;
- break;
- case COMMIT_SCRIPT:
+
+ if (type & msidbCustomActionTypeCommit)
package->commit_action_running = TRUE;
- break;
- case ROLLBACK_SCRIPT:
+
+ if (type & msidbCustomActionTypeRollback)
package->rollback_action_running = TRUE;
- break;
- default:
- break;
- }
if (deferred_data)
set_deferred_action_props(package, deferred_data);
else if (actiondata)
- MSI_SetPropertyW(package, szCustomActionData, actiondata);
+ msi_set_property(package->db, szCustomActionData, actiondata);
else
- MSI_SetPropertyW(package, szCustomActionData, szEmpty);
+ msi_set_property(package->db, szCustomActionData, szEmpty);
msi_free(actiondata);
}
break;
deformat_string(package,target,&deformated);
- rc = MSI_SetPropertyW(package,source,deformated);
+ rc = msi_set_property( package->db, source, deformated );
+ if (rc == ERROR_SUCCESS && !strcmpW( source, cszSourceDir ))
+ msi_reset_folders( package, TRUE );
msi_free(deformated);
break;
case 37: /* JScript/VBScript text stored in target column. */
DWORD sz = MAX_PATH;
UINT r;
- if (MSI_GetPropertyW(package, cszTempFolder, fmt, &sz) != ERROR_SUCCESS)
+ if (msi_get_property(package->db, cszTempFolder, fmt, &sz) != ERROR_SUCCESS)
GetTempPathW(MAX_PATH, fmt);
if (GetTempFileNameW(fmt, szMsi, 0, tmp_file) == 0)
UINT r;
size = MAX_PATH;
- MSI_GetPropertyW(package, cszSourceDir, package_path, &size);
+ msi_get_property(package->db, cszSourceDir, package_path, &size);
lstrcatW(package_path, szBackSlash);
lstrcatW(package_path, source);
memset(&si,0,sizeof(STARTUPINFOW));
memset(&info,0,sizeof(PROCESS_INFORMATION));
- prop = msi_dup_property( package, source );
+ prop = msi_dup_property( package->db, source );
if (!prop)
return ERROR_SUCCESS;
TRACE("%s %s\n", debugstr_w(source), debugstr_w(target));
- prop = msi_dup_property(package,source);
+ prop = msi_dup_property( package->db, source );
if (!prop)
return ERROR_SUCCESS;
EnterCriticalSection( &msi_custom_action_cs );
handle_count = list_count( &msi_pending_custom_actions );
- wait_handles = HeapAlloc( GetProcessHeap(), 0, handle_count * sizeof(HANDLE) );
+ wait_handles = msi_alloc( handle_count * sizeof(HANDLE) );
handle_count = 0;
LIST_FOR_EACH_ENTRY_SAFE( info, cursor, &msi_pending_custom_actions, msi_custom_action_info, entry )
CloseHandle( wait_handles[i] );
}
- HeapFree( GetProcessHeap(), 0, wait_handles );
+ msi_free( wait_handles );
}
typedef struct _msi_custom_remote_impl {