reactos/sdk/include/psdk/msidefs.h

287 lines
9 KiB
C
Raw Normal View History

Sync to Wine-20050211 Mike McCormack <mike@codeweavers.com> - add support for Edit boxes in MSI dialogs - run the message loop when waiting for threads or processes - fix the dialog font - allow waiting on a handle while running the message loop - implement checkboxes in dialogs - use TextStyle enumeration instead of numbers - fix MSI_IterateRecords to return the correct count - Add more dialog controls, do something when they're clicked on. - Implement MsiPreviewDialog. - Implement and document MsiLoadString. - Added stub implementations for MsiPreviewDialog and MsiPreviewBillboard. - Fix MsiModifyView and MsiViewGetColumnInfo to use MSIRECORD* not MSIHANDLE. - Implement, test and document MsiDecomposeDescriptor. - Handle a number as a parameter for custom action 19. - Move OpenQuery into msiquery.c and make it non-static. - Fix and test inserting records. - Fix refcounting, use Interlocked functions. - MsiEvaluateCondition returns an error when passed NULL as a condition. - Lock record in MsiViewExecute, move stubs to end. - Fix MsiRecordSetString for NULL strings and update test case. - Fix a bug caused by freeing memory too soon in the table code. - Update headers, add MsiGetUserInfoA stub implementation. - Fix a memory leak in MsiConfigureProductExW. - Indentation and style cleanup. - implement MsiOpenPackageEx, and forward MsiOpenPackage there - make a MSI_CreatePackage function and use it in MSI_OpenPackage - move MsiOpenPackageA down with the rest of the API functions Juan Lang <juan_lang@yahoo.com> - Partially implement AppSearch action. - If a full path isn't specified, search across all fixed drives. - Simplify AppSearch error checking. - Identifiers evaluate to true if they are non-empty, regardless of value. Aric Stewart <aric@codeweavers.com> - action.c is getting too big, so split out all the handling of CustomActions into custom.c. Cleaned up a lot of the handling of custom actions including scripting actions and processing return codes. - Mike McCormack pointed out that MsiFormatRecord is basically the same as internal function deformat_string. So broke deformat_string out and updated it to function as MsiFormatRecord and implemented MsiFormatRecord. - A number of random fixes to action.c including properly calculating the length for the LocalPackage name, not forcing a reboot when really we should just return ERROR_INSTALL_SUSPEND and handling REG_MULTI_SZ now that we can deformat the properly. - Move the guid squishing functions out of msi.c and make a new registry.c file. Also clean up all the various registry keys we need to open and create to this module and modify the functions for msi.c to call these functions. - Added a few more stub implementations. - Implement custom action type 19, Halt install and display error message. - Continued work to simplify the ProcessAction call, also split it into a ProcessAction and ProcessUIAction for future dialog box work. Also fix a bug in deformat_string where i was not freeing the created record. - Make a temp file for each dll saved for custom actions. This prevents name collisions from causing custom actions to fail. - Do not track the temp files for custom actions based on the name from the table because then we get conflicts and files not tracked or cleaned up. - Add the RegisterUser action. - Implement RegisterExtensionInfo and RegisterMIMEInfo. - Add logic to be able to resolve the SourceDir based on CurrentPath. Also add logic to get the source locations of a file if it is not in a cabinet. - Finish up the framework by stubbing out all the remaining Standard actions. - A fix to deformat_string so it only returns a null return if you provided a null buffer. - Eliminate the giant if.. else if block from ACTION_ProcessAction in favor of a table of handlers. - Return code of the install should not depend on the return code of the final action. - Update component installed states as they are installed so that conditions based on component states are at least a little more correct. - Add icon and argument when regestering clsids. - Add a stub for ResolveSource because we do that work just not in ResolveSource like we should. - When quering a Component state return the correct state. - Enable the updating of Feature and thus the resulting component states. - Run the end of install actions for suspend and user exit states as well. - Start putting in place a currently running state for future ui use. - Use the new registry functions in registry.c. - Do not force a reboot, just return ERROR_INSTALL_SUSPEND and write some keys to the registry. - Quite a few fixes: - Allow for the queing of custom actions to trigger on the InstallExecute or InstallExecuteAgain actions. - allow for the queing of custom actions to trigger on InstallFinalize. - Properly set the CustomActionData property for said queued actions. - Implement RegisterProduct. - Beginning implementation of ForceReboot. - Don't kill install if an item to be duplicated does not exist. - Write out SourceList and LastUsedSource for resuming installs. - Use regsvr32 to register self reg dlls. - Implementations for SelfRegModules and PublishFeatures. - Set default ACTION property for Install. - Deformat more than JUST properties properly. Allows for Files and Component paths in deformat. - Properly deformat a LaunchCondition failure dialog box. - Resolve and save registry Keypaths. - Write the Features published keys more correctly. Still some problems. - First implementation of the WriteIniValues action. - Custom actions can have null in their target parameters, handle that without crashing. Also enable deformating of lines greater than 256 characters. - Added some more suminfo stubs. - An implementation of MsiSummaryInfoGetPropertyW based off of MsiSummaryInfoGetPropertyA. - Added stubs for MsiGetShortcutTargetA/W. - Do a very basic first implementation of MsiConfigureProductExW for msiexec /@ when run as a reboot. - Also add a number of new stubs for the office xp and 2k3 install and startup process. - Fix a copy and paste error, check for a null value and discard unneeded errors. - Do not limit properties to 256 characters when evaluating them. - Setting a record to an empty string is the same as making it null. - First pass implement ion of MsiQueryProductState[A/W] as well as a few fixes for MsiGetComponentPath. - Actually start on an implemention for MsiGetComponentPathW that should handle all keypaths that are files. - A reworking of format.c to remove the recursion, clean things up and stabilize behavior to match windows. - Cleanup processing a bit more. - Allow for nested keys to work properly. - MsiGetProperty does not return any error on missing properties. - The new Insert fixes now properly require ?,? instead of just ? for the Insert call. This fix modifies the MSI_SetProperty query to be correct. Michael Stefaniuc <mstefani@redhat.de> - Do not check for non NULL pointer before HeapFree'ing it. It's redundant. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Ulrich Czekalla <ulrich@codeweavers.com> - Handle 0 length buffers in MSI_FormatRecordW. - Remove unused buffer in deformat_string. Mike Hearn <mh@codeweavers.com> - Correctly ensure properties set from resolved directory paths are backslash terminated. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Marcus Meissner <meissner@suse.de> - Initialize rc in create_component_directory(). Alexandre Julliard <julliard@winehq.org> - Avoid unnecessary run-time initializations. svn path=/trunk/; revision=13518
2005-02-12 22:59:04 +00:00
/*
* Copyright (C) 2005 Mike McCormack
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Sync to Wine-20050211 Mike McCormack <mike@codeweavers.com> - add support for Edit boxes in MSI dialogs - run the message loop when waiting for threads or processes - fix the dialog font - allow waiting on a handle while running the message loop - implement checkboxes in dialogs - use TextStyle enumeration instead of numbers - fix MSI_IterateRecords to return the correct count - Add more dialog controls, do something when they're clicked on. - Implement MsiPreviewDialog. - Implement and document MsiLoadString. - Added stub implementations for MsiPreviewDialog and MsiPreviewBillboard. - Fix MsiModifyView and MsiViewGetColumnInfo to use MSIRECORD* not MSIHANDLE. - Implement, test and document MsiDecomposeDescriptor. - Handle a number as a parameter for custom action 19. - Move OpenQuery into msiquery.c and make it non-static. - Fix and test inserting records. - Fix refcounting, use Interlocked functions. - MsiEvaluateCondition returns an error when passed NULL as a condition. - Lock record in MsiViewExecute, move stubs to end. - Fix MsiRecordSetString for NULL strings and update test case. - Fix a bug caused by freeing memory too soon in the table code. - Update headers, add MsiGetUserInfoA stub implementation. - Fix a memory leak in MsiConfigureProductExW. - Indentation and style cleanup. - implement MsiOpenPackageEx, and forward MsiOpenPackage there - make a MSI_CreatePackage function and use it in MSI_OpenPackage - move MsiOpenPackageA down with the rest of the API functions Juan Lang <juan_lang@yahoo.com> - Partially implement AppSearch action. - If a full path isn't specified, search across all fixed drives. - Simplify AppSearch error checking. - Identifiers evaluate to true if they are non-empty, regardless of value. Aric Stewart <aric@codeweavers.com> - action.c is getting too big, so split out all the handling of CustomActions into custom.c. Cleaned up a lot of the handling of custom actions including scripting actions and processing return codes. - Mike McCormack pointed out that MsiFormatRecord is basically the same as internal function deformat_string. So broke deformat_string out and updated it to function as MsiFormatRecord and implemented MsiFormatRecord. - A number of random fixes to action.c including properly calculating the length for the LocalPackage name, not forcing a reboot when really we should just return ERROR_INSTALL_SUSPEND and handling REG_MULTI_SZ now that we can deformat the properly. - Move the guid squishing functions out of msi.c and make a new registry.c file. Also clean up all the various registry keys we need to open and create to this module and modify the functions for msi.c to call these functions. - Added a few more stub implementations. - Implement custom action type 19, Halt install and display error message. - Continued work to simplify the ProcessAction call, also split it into a ProcessAction and ProcessUIAction for future dialog box work. Also fix a bug in deformat_string where i was not freeing the created record. - Make a temp file for each dll saved for custom actions. This prevents name collisions from causing custom actions to fail. - Do not track the temp files for custom actions based on the name from the table because then we get conflicts and files not tracked or cleaned up. - Add the RegisterUser action. - Implement RegisterExtensionInfo and RegisterMIMEInfo. - Add logic to be able to resolve the SourceDir based on CurrentPath. Also add logic to get the source locations of a file if it is not in a cabinet. - Finish up the framework by stubbing out all the remaining Standard actions. - A fix to deformat_string so it only returns a null return if you provided a null buffer. - Eliminate the giant if.. else if block from ACTION_ProcessAction in favor of a table of handlers. - Return code of the install should not depend on the return code of the final action. - Update component installed states as they are installed so that conditions based on component states are at least a little more correct. - Add icon and argument when regestering clsids. - Add a stub for ResolveSource because we do that work just not in ResolveSource like we should. - When quering a Component state return the correct state. - Enable the updating of Feature and thus the resulting component states. - Run the end of install actions for suspend and user exit states as well. - Start putting in place a currently running state for future ui use. - Use the new registry functions in registry.c. - Do not force a reboot, just return ERROR_INSTALL_SUSPEND and write some keys to the registry. - Quite a few fixes: - Allow for the queing of custom actions to trigger on the InstallExecute or InstallExecuteAgain actions. - allow for the queing of custom actions to trigger on InstallFinalize. - Properly set the CustomActionData property for said queued actions. - Implement RegisterProduct. - Beginning implementation of ForceReboot. - Don't kill install if an item to be duplicated does not exist. - Write out SourceList and LastUsedSource for resuming installs. - Use regsvr32 to register self reg dlls. - Implementations for SelfRegModules and PublishFeatures. - Set default ACTION property for Install. - Deformat more than JUST properties properly. Allows for Files and Component paths in deformat. - Properly deformat a LaunchCondition failure dialog box. - Resolve and save registry Keypaths. - Write the Features published keys more correctly. Still some problems. - First implementation of the WriteIniValues action. - Custom actions can have null in their target parameters, handle that without crashing. Also enable deformating of lines greater than 256 characters. - Added some more suminfo stubs. - An implementation of MsiSummaryInfoGetPropertyW based off of MsiSummaryInfoGetPropertyA. - Added stubs for MsiGetShortcutTargetA/W. - Do a very basic first implementation of MsiConfigureProductExW for msiexec /@ when run as a reboot. - Also add a number of new stubs for the office xp and 2k3 install and startup process. - Fix a copy and paste error, check for a null value and discard unneeded errors. - Do not limit properties to 256 characters when evaluating them. - Setting a record to an empty string is the same as making it null. - First pass implement ion of MsiQueryProductState[A/W] as well as a few fixes for MsiGetComponentPath. - Actually start on an implemention for MsiGetComponentPathW that should handle all keypaths that are files. - A reworking of format.c to remove the recursion, clean things up and stabilize behavior to match windows. - Cleanup processing a bit more. - Allow for nested keys to work properly. - MsiGetProperty does not return any error on missing properties. - The new Insert fixes now properly require ?,? instead of just ? for the Insert call. This fix modifies the MSI_SetProperty query to be correct. Michael Stefaniuc <mstefani@redhat.de> - Do not check for non NULL pointer before HeapFree'ing it. It's redundant. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Ulrich Czekalla <ulrich@codeweavers.com> - Handle 0 length buffers in MSI_FormatRecordW. - Remove unused buffer in deformat_string. Mike Hearn <mh@codeweavers.com> - Correctly ensure properties set from resolved directory paths are backslash terminated. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Marcus Meissner <meissner@suse.de> - Initialize rc in create_component_directory(). Alexandre Julliard <julliard@winehq.org> - Avoid unnecessary run-time initializations. svn path=/trunk/; revision=13518
2005-02-12 22:59:04 +00:00
*/
#ifndef __WINE_MSIDEFS_H
#define __WINE_MSIDEFS_H
Sync to Wine-20050628: Mike McCormack <mike@codeweavers.com> - Repaint the area behind the "transparent" text control when it changes. - Implement transparency in the text control. - Make the MSI icon control work. - Make tabs work in msi dialogs. - Added support for the MSI MaskEdit control. - Use a richedit control for license text. - Fix radio button groups. Don't add the WS_GROUP style to every window. - Use standard lists in the event subscription code. - Take the dialog frame into account when calculating the dialog size. - Use MSI_QueryGetRecord in one more place. - Create a helper function to fetch a single record from a query. - More -Wmissing-declarations and -Wwrite-strings warning fixes. - Get rid of some redundant parser types. - Use the new helper function MSI_QueryGetRecord. - Use MSI_RecordGetString in more actions. - Use MSI_RecordGetString where possible. - Fixes for -Wmissing-declarations and -Wwrite-strings warnings. - Remove some unused code. - Add and correct some function declarations. - Improve number parsing and avoid unicode.h. - avoid unicode.h - add a missing function prototype - Create a stub implementation for MsiViewGetError. - Remove more types from the parser. - Test and fix the size of stream fields in a record. - Clean up headers and make some functions static. Marcus Meissner <meissner@suse.de> - Use a simpler expression for the "RichEdit20W" string to workaround compiler bug. - Remove cszbs from msi/action.h. Aric Stewart <aric@codeweavers.com> Mike McCormack <mike@codeweavers.com> - Allow dialog controls to subscribe to installer events. - Fix handling of checkbox properties. - Implement dialog events and hook up the dialog code. Aric Stewart <aric@codeweavers.com> - Break out all the file related actions and helper functions into files.c - Break out all the top level apis into install.c. - Break out all the class registration actions into classes.c. This includes RegisterClassInfo, RegisterProgIds, RegisterExtensions and RegisterMIMETypes. - Break out all the helper functions into helpers.c. - Added module upgrade.c and implemented FindRelatedProducts. - A long overdue fix to MSI_SetTargetPath. This should fix an error with some installers that where unable to change the target path. - Add functions to add the User UpgradeCodes. - A simple cleanup to only track the temp file if we need to have it laying around because the action is going on asynchronously. Otherwise clean up the temp file as the action finishes. - Introduce really basic scripting of actions. This is primarily to get the order of execution of the action correct since some custom actions can be scripted and others are run during the script building phase. - Perform ExecuteAction at UILevel 2. - Rework CreateShortcuts to use MSI_IterateRecords. - Properly handle -1 as a registry key root. - Rework SelfRegModules to use MSI_IterateRecords. - Rework component, feature and file loading to use MSI_IterateRecords. - Rework RegisterFonts to use MSI_IterateRecords. - Rework WriteIniValues to use MSI_IterateRecords. - Rework PublishProduct to use MSI_IterateRecords. - Rework RegisterTypeLibraries to use MSI_IterateR - Rework LaunchConditions to use MSI_IterateRecord - Rework CostFinalize to use MSI_IterateRecords. - Rework WriteRegistryValues to use MSI_IterateRecords. - Rework CreateFolders to use MSI_IterateRecords. - Use MSI_IterateRecords for processing actions. Some whitespace cleanup and replace a comment block I did not want to remove. - Flesh out the remaining keys in RegisterProduct. - Extending upon Mike McCormack's cleanup to use MSI_RecordGetString. - Register the Product Version also. Also help plug some memory leaks pointed out by Mike McCormack. - Avoid a loop where a parent's parent refers to itself as its parent. - Added module upgrade.c and implemented FindRelatedProducts. - Set the Preselected property if appropriate (relevant to MigrateFeatureStates when implemented). - Write out Product Language and Product Icon to the registry. - Write out UpgradeCodes to the registry to allow for future upgrades. - Don't get caught in loops on parent progids. - Since multiple progids can refer to 1 class we need to check if that class is isntalled instead of just relying on having it set the InstallMe variable. - Add install_on_demand for Extension servers also. currently defaulting to TRUE. - Extension need to have 1 verb to mark the given progid to be installed. - Do not loop if a ProgId's Parent Index it itself. - Add a VersionIndIndex for tracking version independent fields for the ProgIds properly. - Print a message for skipped actions in ProcessExecSequence like in the UISequence. - Do not change a features state to Advertise if it explicitly disallows it. - For typelibs index 1 do not add \\1 to the path. This cleans up registry diffs with native MSI. - Register the FileType and correct short vs long path problems with InprocServer32. Also add install_on_demand boolean for future expansion. - First pass at writing out CurVer keys for ProgIds. Also print a message for the actions we skip. Lines up with native MSI output logs for ease of comparison. - A big rewrite of the whole RegisterClass, RegisterProgId, RegisterExtension and RegisterMIME actions. We now handle verbs properly, handle dependancies and such properly and keep track of what we need to register and what we do not properly. - Allow control events to return codes to halt the processing of event. Needed for the SetTargetPath Event. - Fix situations where TARGETDIR is set to a non \ terminated path. Fixes a few installers. - Redo how we extract files from a cabinet in order to dramatically improve performance, especially if picking and choosing files out of the cabinet. - Duplicate files should not fail if unable to get Destination Directory. - Use MSI_IterateRecords for DuplicateFiles. - Add UI messages to FindRelatedProducts. - Reduce unneeded includes. - A "1" is returned not a 1 for AssignmentType. Also as a bit more to the FIXME message. - Add Language to the values we can query with MsiGetProductInfo. - Correct a crash if the length buffer is NULL. - Locate where a buffer size is not being set and correctly handle the buffer size conversion from W to A (with help from Robert Shearman). - Make sure the TRACE statements do not spew garbage by using debugstr_wn. - Restrict deformating of nested index keys [[1]]. - Introduce the beginning of group deformating {}. - Implement the [!file] format to produce the short filename. Stefan Huehner <stefan@huehner.org> - Fix more -Wstrict-prototypes warnings. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Dmitry Timoshkov <dmitry@codeweavers.com> - Make more of the OLE interface vtables const. svn path=/trunk/; revision=17034
2005-08-03 22:12:15 +00:00
enum msidbUpgradeAttributes {
msidbUpgradeAttributesMigrateFeatures = 0x0000001,
msidbUpgradeAttributesOnlyDetect = 0x00000002,
msidbUpgradeAttributesIgnoreRemoveFailure = 0x00000004,
msidbUpgradeAttributesVersionMinInclusive = 0x00000100,
msidbUpgradeAttributesVersionMaxInclusive = 0x00000200,
msidbUpgradeAttributesLanguagesExclusive = 0x00000400
};
Sync to Wine-20050524: Alexander Julliard <julliard@winehq.org> - Added rules for building import libraries in the individual dll makefiles, and added support for building a .def.a static import library too. Aric Stewart <aric@codeweavers.com> - Fix a few leaking object handles. - Correct user component publication. - Implement MsiEnumComponentQualifiers. - Implement Publish Components in order for MsiGetQualifiedComponent apis to work. Also implement MsiGetQualifiedComponent, or at least some of the functionality as it is supposed to install stuff if it is absent, which it does not do yet. - Correct query quoting based on Mike's patch. Also more error messages about return codes from custom actions and ignore an error that we should be ignoring. - Double terminate SZ_MULTI properly. - ClassInfo and ExtensionInfo are also written for ADVERTISED components. - Write the RegOwner and RegCompany keys as blank if they do not exist when doing the RegisterUser action. - Fix quoting on queries. - Respect '+' and '*' in WriteRegistryValues to only create the key if it does not already exist. Prevents overwriting values with NULL. - We cannot internally load the files in FileCost because that action may be skipped or not called. So do it in CostInitialize. - Quote the file path in SelfRegModules. - Do not write squished null guids to the feature registration. - Correctly use short filenames from uncompressed file sources. Also default feature and component install states to ABSENT instead of UNKNOWN. - Correct a problem with parse_data if binary data was not in full bytes. - More properly handle uncompressed file sources, fix the creating and parsing of Source Directories. - ExecuteAction runs the whole Execute table and not just from InstallValidate onward. To do this make sure we do not do the costing initialization work again if it is already done (by checking the CostingComplete Property). - A lot of work to refine feature states, setting the state affects the state of all child features and also respect features that want to default to something other than LOCAL. - Fix a few leaking object handles. - Correct user component publication. - Implement MsiEnumComponentQualifiers. - We have a stub for MsiGetUserInfoA we should use it. - A few small fixes. - Add a missing msiobj_release that was resulting in a leaked object with each MsiCreateRecord call. - Fix a leaking handle. - Make MsiCollectUserInfo more internally consistent. Thanks to Mike McCormack. - Fix a leaking handle in MsiConfigureProductExW. - Implement MsiGetProductCodeW. - Implement MsiGetUserInfoW. - Implement MsiCollectUserInfoA/W. - Implement MsiQueryFeatureStateW. - Correct a leaking hkey handle. - Expand some handling of special properties in MsiGetProductInfo. - Fix for the return codes for the Qualified component calls. They are not INSTALLSTATEs but rather success values. - Quoting fixes. Mike McCormack <mike@codeweavers.com> - Make sure that dialogs are only created and destroyed in a single thread. - Track memory allocations in the SQL parser. - Create the ORDER BY view in a single call. - Simplify parsing of the FROM keyword. - Improve parser error checking. - Simplify parsing of select query. - remove the unused utf8 field of an expression - make the parse result a single assignment at top level of parsing - abort parsing on a memory allocation failure - Only tables can be backquoted, strings must be single quoted. - Declare MsiExportDatabase* in the spec file, and fix a typo. - make sure to free the string table when closing the database - don't free szPersist in MsiOpenDatabase if it's not a string - Avoid some non-standard str functions. Francois Gouget <fgouget@free.fr> - Tweak the documentation to make winapi_check happy. Juan Lang <juan_lang@yahoo.com> - Don't fail in RegisterFonts if the Fonts table is missing. - Partially implement AppSearch for RegLocator-type searches. - Turn handled errors from ERRs to WARNs or TRACEs. Vincent Beron <vberon@mecano.gme.usherb.ca> - Use SUBLANG_NEUTRAL for French resources. Stefan Leichter <Stefan.Leichter@camLine.com> - Update version resource of msi.dll to current version shipped from windows update. - Added minimal implementation of MsiCreateAndVerifyInstallerDirectory. Marcus Meissner <marcus@jet.franken.de> - Set PhysicalMemory property from system data. svn path=/trunk/; revision=15537
2005-05-26 21:55:34 +00:00
enum msidbFileAttributes {
msidbFileAttributesReadOnly = 0x00000001,
msidbFileAttributesHidden = 0x00000002,
msidbFileAttributesSystem = 0x00000004,
msidbFileAttributesVital = 0x00000200,
msidbFileAttributesChecksum = 0x00000400,
msidbFileAttributesPatchAdded = 0x00001000,
msidbFileAttributesNoncompressed = 0x00002000,
msidbFileAttributesCompressed = 0x00004000
};
enum msidbPatchAttributes {
msidbPatchAttributesNonVital = 0x00000001
};
Sync to Wine-20050211 Mike McCormack <mike@codeweavers.com> - add support for Edit boxes in MSI dialogs - run the message loop when waiting for threads or processes - fix the dialog font - allow waiting on a handle while running the message loop - implement checkboxes in dialogs - use TextStyle enumeration instead of numbers - fix MSI_IterateRecords to return the correct count - Add more dialog controls, do something when they're clicked on. - Implement MsiPreviewDialog. - Implement and document MsiLoadString. - Added stub implementations for MsiPreviewDialog and MsiPreviewBillboard. - Fix MsiModifyView and MsiViewGetColumnInfo to use MSIRECORD* not MSIHANDLE. - Implement, test and document MsiDecomposeDescriptor. - Handle a number as a parameter for custom action 19. - Move OpenQuery into msiquery.c and make it non-static. - Fix and test inserting records. - Fix refcounting, use Interlocked functions. - MsiEvaluateCondition returns an error when passed NULL as a condition. - Lock record in MsiViewExecute, move stubs to end. - Fix MsiRecordSetString for NULL strings and update test case. - Fix a bug caused by freeing memory too soon in the table code. - Update headers, add MsiGetUserInfoA stub implementation. - Fix a memory leak in MsiConfigureProductExW. - Indentation and style cleanup. - implement MsiOpenPackageEx, and forward MsiOpenPackage there - make a MSI_CreatePackage function and use it in MSI_OpenPackage - move MsiOpenPackageA down with the rest of the API functions Juan Lang <juan_lang@yahoo.com> - Partially implement AppSearch action. - If a full path isn't specified, search across all fixed drives. - Simplify AppSearch error checking. - Identifiers evaluate to true if they are non-empty, regardless of value. Aric Stewart <aric@codeweavers.com> - action.c is getting too big, so split out all the handling of CustomActions into custom.c. Cleaned up a lot of the handling of custom actions including scripting actions and processing return codes. - Mike McCormack pointed out that MsiFormatRecord is basically the same as internal function deformat_string. So broke deformat_string out and updated it to function as MsiFormatRecord and implemented MsiFormatRecord. - A number of random fixes to action.c including properly calculating the length for the LocalPackage name, not forcing a reboot when really we should just return ERROR_INSTALL_SUSPEND and handling REG_MULTI_SZ now that we can deformat the properly. - Move the guid squishing functions out of msi.c and make a new registry.c file. Also clean up all the various registry keys we need to open and create to this module and modify the functions for msi.c to call these functions. - Added a few more stub implementations. - Implement custom action type 19, Halt install and display error message. - Continued work to simplify the ProcessAction call, also split it into a ProcessAction and ProcessUIAction for future dialog box work. Also fix a bug in deformat_string where i was not freeing the created record. - Make a temp file for each dll saved for custom actions. This prevents name collisions from causing custom actions to fail. - Do not track the temp files for custom actions based on the name from the table because then we get conflicts and files not tracked or cleaned up. - Add the RegisterUser action. - Implement RegisterExtensionInfo and RegisterMIMEInfo. - Add logic to be able to resolve the SourceDir based on CurrentPath. Also add logic to get the source locations of a file if it is not in a cabinet. - Finish up the framework by stubbing out all the remaining Standard actions. - A fix to deformat_string so it only returns a null return if you provided a null buffer. - Eliminate the giant if.. else if block from ACTION_ProcessAction in favor of a table of handlers. - Return code of the install should not depend on the return code of the final action. - Update component installed states as they are installed so that conditions based on component states are at least a little more correct. - Add icon and argument when regestering clsids. - Add a stub for ResolveSource because we do that work just not in ResolveSource like we should. - When quering a Component state return the correct state. - Enable the updating of Feature and thus the resulting component states. - Run the end of install actions for suspend and user exit states as well. - Start putting in place a currently running state for future ui use. - Use the new registry functions in registry.c. - Do not force a reboot, just return ERROR_INSTALL_SUSPEND and write some keys to the registry. - Quite a few fixes: - Allow for the queing of custom actions to trigger on the InstallExecute or InstallExecuteAgain actions. - allow for the queing of custom actions to trigger on InstallFinalize. - Properly set the CustomActionData property for said queued actions. - Implement RegisterProduct. - Beginning implementation of ForceReboot. - Don't kill install if an item to be duplicated does not exist. - Write out SourceList and LastUsedSource for resuming installs. - Use regsvr32 to register self reg dlls. - Implementations for SelfRegModules and PublishFeatures. - Set default ACTION property for Install. - Deformat more than JUST properties properly. Allows for Files and Component paths in deformat. - Properly deformat a LaunchCondition failure dialog box. - Resolve and save registry Keypaths. - Write the Features published keys more correctly. Still some problems. - First implementation of the WriteIniValues action. - Custom actions can have null in their target parameters, handle that without crashing. Also enable deformating of lines greater than 256 characters. - Added some more suminfo stubs. - An implementation of MsiSummaryInfoGetPropertyW based off of MsiSummaryInfoGetPropertyA. - Added stubs for MsiGetShortcutTargetA/W. - Do a very basic first implementation of MsiConfigureProductExW for msiexec /@ when run as a reboot. - Also add a number of new stubs for the office xp and 2k3 install and startup process. - Fix a copy and paste error, check for a null value and discard unneeded errors. - Do not limit properties to 256 characters when evaluating them. - Setting a record to an empty string is the same as making it null. - First pass implement ion of MsiQueryProductState[A/W] as well as a few fixes for MsiGetComponentPath. - Actually start on an implemention for MsiGetComponentPathW that should handle all keypaths that are files. - A reworking of format.c to remove the recursion, clean things up and stabilize behavior to match windows. - Cleanup processing a bit more. - Allow for nested keys to work properly. - MsiGetProperty does not return any error on missing properties. - The new Insert fixes now properly require ?,? instead of just ? for the Insert call. This fix modifies the MSI_SetProperty query to be correct. Michael Stefaniuc <mstefani@redhat.de> - Do not check for non NULL pointer before HeapFree'ing it. It's redundant. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Ulrich Czekalla <ulrich@codeweavers.com> - Handle 0 length buffers in MSI_FormatRecordW. - Remove unused buffer in deformat_string. Mike Hearn <mh@codeweavers.com> - Correctly ensure properties set from resolved directory paths are backslash terminated. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Marcus Meissner <meissner@suse.de> - Initialize rc in create_component_directory(). Alexandre Julliard <julliard@winehq.org> - Avoid unnecessary run-time initializations. svn path=/trunk/; revision=13518
2005-02-12 22:59:04 +00:00
enum msidbDialogAttributes {
msidbDialogAttributesVisible = 0x00000001,
msidbDialogAttributesModal = 0x00000002,
msidbDialogAttributesMinimize = 0x00000004,
msidbDialogAttributesSysModal = 0x00000008,
msidbDialogAttributesKeepModeless = 0x00000010,
msidbDialogAttributesTrackDiskSpace = 0x00000020,
msidbDialogAttributesUseCustomPalette = 0x00000040,
msidbDialogAttributesRTLRO = 0x00000080,
msidbDialogAttributesRightAligned = 0x00000100,
msidbDialogAttributesLeftScroll = 0x00000200,
msidbDialogAttributesBidi = 0x00000380,
msidbDialogAttributesError = 0x00010000
};
Sync to Wine-20050628: Mike McCormack <mike@codeweavers.com> - Repaint the area behind the "transparent" text control when it changes. - Implement transparency in the text control. - Make the MSI icon control work. - Make tabs work in msi dialogs. - Added support for the MSI MaskEdit control. - Use a richedit control for license text. - Fix radio button groups. Don't add the WS_GROUP style to every window. - Use standard lists in the event subscription code. - Take the dialog frame into account when calculating the dialog size. - Use MSI_QueryGetRecord in one more place. - Create a helper function to fetch a single record from a query. - More -Wmissing-declarations and -Wwrite-strings warning fixes. - Get rid of some redundant parser types. - Use the new helper function MSI_QueryGetRecord. - Use MSI_RecordGetString in more actions. - Use MSI_RecordGetString where possible. - Fixes for -Wmissing-declarations and -Wwrite-strings warnings. - Remove some unused code. - Add and correct some function declarations. - Improve number parsing and avoid unicode.h. - avoid unicode.h - add a missing function prototype - Create a stub implementation for MsiViewGetError. - Remove more types from the parser. - Test and fix the size of stream fields in a record. - Clean up headers and make some functions static. Marcus Meissner <meissner@suse.de> - Use a simpler expression for the "RichEdit20W" string to workaround compiler bug. - Remove cszbs from msi/action.h. Aric Stewart <aric@codeweavers.com> Mike McCormack <mike@codeweavers.com> - Allow dialog controls to subscribe to installer events. - Fix handling of checkbox properties. - Implement dialog events and hook up the dialog code. Aric Stewart <aric@codeweavers.com> - Break out all the file related actions and helper functions into files.c - Break out all the top level apis into install.c. - Break out all the class registration actions into classes.c. This includes RegisterClassInfo, RegisterProgIds, RegisterExtensions and RegisterMIMETypes. - Break out all the helper functions into helpers.c. - Added module upgrade.c and implemented FindRelatedProducts. - A long overdue fix to MSI_SetTargetPath. This should fix an error with some installers that where unable to change the target path. - Add functions to add the User UpgradeCodes. - A simple cleanup to only track the temp file if we need to have it laying around because the action is going on asynchronously. Otherwise clean up the temp file as the action finishes. - Introduce really basic scripting of actions. This is primarily to get the order of execution of the action correct since some custom actions can be scripted and others are run during the script building phase. - Perform ExecuteAction at UILevel 2. - Rework CreateShortcuts to use MSI_IterateRecords. - Properly handle -1 as a registry key root. - Rework SelfRegModules to use MSI_IterateRecords. - Rework component, feature and file loading to use MSI_IterateRecords. - Rework RegisterFonts to use MSI_IterateRecords. - Rework WriteIniValues to use MSI_IterateRecords. - Rework PublishProduct to use MSI_IterateRecords. - Rework RegisterTypeLibraries to use MSI_IterateR - Rework LaunchConditions to use MSI_IterateRecord - Rework CostFinalize to use MSI_IterateRecords. - Rework WriteRegistryValues to use MSI_IterateRecords. - Rework CreateFolders to use MSI_IterateRecords. - Use MSI_IterateRecords for processing actions. Some whitespace cleanup and replace a comment block I did not want to remove. - Flesh out the remaining keys in RegisterProduct. - Extending upon Mike McCormack's cleanup to use MSI_RecordGetString. - Register the Product Version also. Also help plug some memory leaks pointed out by Mike McCormack. - Avoid a loop where a parent's parent refers to itself as its parent. - Added module upgrade.c and implemented FindRelatedProducts. - Set the Preselected property if appropriate (relevant to MigrateFeatureStates when implemented). - Write out Product Language and Product Icon to the registry. - Write out UpgradeCodes to the registry to allow for future upgrades. - Don't get caught in loops on parent progids. - Since multiple progids can refer to 1 class we need to check if that class is isntalled instead of just relying on having it set the InstallMe variable. - Add install_on_demand for Extension servers also. currently defaulting to TRUE. - Extension need to have 1 verb to mark the given progid to be installed. - Do not loop if a ProgId's Parent Index it itself. - Add a VersionIndIndex for tracking version independent fields for the ProgIds properly. - Print a message for skipped actions in ProcessExecSequence like in the UISequence. - Do not change a features state to Advertise if it explicitly disallows it. - For typelibs index 1 do not add \\1 to the path. This cleans up registry diffs with native MSI. - Register the FileType and correct short vs long path problems with InprocServer32. Also add install_on_demand boolean for future expansion. - First pass at writing out CurVer keys for ProgIds. Also print a message for the actions we skip. Lines up with native MSI output logs for ease of comparison. - A big rewrite of the whole RegisterClass, RegisterProgId, RegisterExtension and RegisterMIME actions. We now handle verbs properly, handle dependancies and such properly and keep track of what we need to register and what we do not properly. - Allow control events to return codes to halt the processing of event. Needed for the SetTargetPath Event. - Fix situations where TARGETDIR is set to a non \ terminated path. Fixes a few installers. - Redo how we extract files from a cabinet in order to dramatically improve performance, especially if picking and choosing files out of the cabinet. - Duplicate files should not fail if unable to get Destination Directory. - Use MSI_IterateRecords for DuplicateFiles. - Add UI messages to FindRelatedProducts. - Reduce unneeded includes. - A "1" is returned not a 1 for AssignmentType. Also as a bit more to the FIXME message. - Add Language to the values we can query with MsiGetProductInfo. - Correct a crash if the length buffer is NULL. - Locate where a buffer size is not being set and correctly handle the buffer size conversion from W to A (with help from Robert Shearman). - Make sure the TRACE statements do not spew garbage by using debugstr_wn. - Restrict deformating of nested index keys [[1]]. - Introduce the beginning of group deformating {}. - Implement the [!file] format to produce the short filename. Stefan Huehner <stefan@huehner.org> - Fix more -Wstrict-prototypes warnings. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Dmitry Timoshkov <dmitry@codeweavers.com> - Make more of the OLE interface vtables const. svn path=/trunk/; revision=17034
2005-08-03 22:12:15 +00:00
enum msidbControlAttributes {
msidbControlAttributesVisible = 0x00000001,
msidbControlAttributesEnabled = 0x00000002,
msidbControlAttributesSunken = 0x00000004,
msidbControlAttributesIndirect = 0x00000008,
msidbControlAttributesInteger = 0x00000010,
msidbControlAttributesRTLRO = 0x00000020,
msidbControlAttributesRightAligned = 0x00000040,
msidbControlAttributesLeftScroll = 0x00000080,
msidbControlAttributesBiDi = 0x000000c0,
msidbControlAttributesTransparent = 0x00010000,
msidbControlAttributesNoPrefix = 0x00020000,
msidbControlAttributesNoWrap = 0x00040000,
msidbControlAttributesFormatSize = 0x00080000,
msidbControlAttributesUsersLanguage = 0x00100000,
msidbControlAttributesMultiline = 0x00010000,
msidbControlAttributesPasswordInput = 0x00200000,
msidbControlAttributesProgress95 = 0x00010000,
msidbControlAttributesRemovableVolume = 0x00010000,
msidbControlAttributesFixedVolume = 0x00020000,
msidbControlAttributesRemoteVolume = 0x00040000,
msidbControlAttributesCDROMVolume = 0x00080000,
msidbControlAttributesRAMdiskVolume = 0x00100000,
msidbControlAttributesFloppyVolume = 0x00200000,
msidbControlShowRollbackCost = 0x00400000,
msidbControlAttributesSorted = 0x00010000,
msidbControlAttributesComboList = 0x00020000,
msidbControlAttributesImageHandle = 0x00010000,
msidbControlAttributesPushLike = 0x00020000,
msidbControlAttributesBitmap = 0x00040000,
msidbControlAttributesIcon = 0x00080000,
msidbControlAttributesFixedSize = 0x00100000,
msidbControlAttributesIconSize16 = 0x00200000,
msidbControlAttributesIconSize32 = 0x00400000,
msidbControlAttributesIconSize48 = 0x00600000,
msidbControlAttributesHasBorder = 0x01000000,
};
Sync to Wine-20050211 Mike McCormack <mike@codeweavers.com> - add support for Edit boxes in MSI dialogs - run the message loop when waiting for threads or processes - fix the dialog font - allow waiting on a handle while running the message loop - implement checkboxes in dialogs - use TextStyle enumeration instead of numbers - fix MSI_IterateRecords to return the correct count - Add more dialog controls, do something when they're clicked on. - Implement MsiPreviewDialog. - Implement and document MsiLoadString. - Added stub implementations for MsiPreviewDialog and MsiPreviewBillboard. - Fix MsiModifyView and MsiViewGetColumnInfo to use MSIRECORD* not MSIHANDLE. - Implement, test and document MsiDecomposeDescriptor. - Handle a number as a parameter for custom action 19. - Move OpenQuery into msiquery.c and make it non-static. - Fix and test inserting records. - Fix refcounting, use Interlocked functions. - MsiEvaluateCondition returns an error when passed NULL as a condition. - Lock record in MsiViewExecute, move stubs to end. - Fix MsiRecordSetString for NULL strings and update test case. - Fix a bug caused by freeing memory too soon in the table code. - Update headers, add MsiGetUserInfoA stub implementation. - Fix a memory leak in MsiConfigureProductExW. - Indentation and style cleanup. - implement MsiOpenPackageEx, and forward MsiOpenPackage there - make a MSI_CreatePackage function and use it in MSI_OpenPackage - move MsiOpenPackageA down with the rest of the API functions Juan Lang <juan_lang@yahoo.com> - Partially implement AppSearch action. - If a full path isn't specified, search across all fixed drives. - Simplify AppSearch error checking. - Identifiers evaluate to true if they are non-empty, regardless of value. Aric Stewart <aric@codeweavers.com> - action.c is getting too big, so split out all the handling of CustomActions into custom.c. Cleaned up a lot of the handling of custom actions including scripting actions and processing return codes. - Mike McCormack pointed out that MsiFormatRecord is basically the same as internal function deformat_string. So broke deformat_string out and updated it to function as MsiFormatRecord and implemented MsiFormatRecord. - A number of random fixes to action.c including properly calculating the length for the LocalPackage name, not forcing a reboot when really we should just return ERROR_INSTALL_SUSPEND and handling REG_MULTI_SZ now that we can deformat the properly. - Move the guid squishing functions out of msi.c and make a new registry.c file. Also clean up all the various registry keys we need to open and create to this module and modify the functions for msi.c to call these functions. - Added a few more stub implementations. - Implement custom action type 19, Halt install and display error message. - Continued work to simplify the ProcessAction call, also split it into a ProcessAction and ProcessUIAction for future dialog box work. Also fix a bug in deformat_string where i was not freeing the created record. - Make a temp file for each dll saved for custom actions. This prevents name collisions from causing custom actions to fail. - Do not track the temp files for custom actions based on the name from the table because then we get conflicts and files not tracked or cleaned up. - Add the RegisterUser action. - Implement RegisterExtensionInfo and RegisterMIMEInfo. - Add logic to be able to resolve the SourceDir based on CurrentPath. Also add logic to get the source locations of a file if it is not in a cabinet. - Finish up the framework by stubbing out all the remaining Standard actions. - A fix to deformat_string so it only returns a null return if you provided a null buffer. - Eliminate the giant if.. else if block from ACTION_ProcessAction in favor of a table of handlers. - Return code of the install should not depend on the return code of the final action. - Update component installed states as they are installed so that conditions based on component states are at least a little more correct. - Add icon and argument when regestering clsids. - Add a stub for ResolveSource because we do that work just not in ResolveSource like we should. - When quering a Component state return the correct state. - Enable the updating of Feature and thus the resulting component states. - Run the end of install actions for suspend and user exit states as well. - Start putting in place a currently running state for future ui use. - Use the new registry functions in registry.c. - Do not force a reboot, just return ERROR_INSTALL_SUSPEND and write some keys to the registry. - Quite a few fixes: - Allow for the queing of custom actions to trigger on the InstallExecute or InstallExecuteAgain actions. - allow for the queing of custom actions to trigger on InstallFinalize. - Properly set the CustomActionData property for said queued actions. - Implement RegisterProduct. - Beginning implementation of ForceReboot. - Don't kill install if an item to be duplicated does not exist. - Write out SourceList and LastUsedSource for resuming installs. - Use regsvr32 to register self reg dlls. - Implementations for SelfRegModules and PublishFeatures. - Set default ACTION property for Install. - Deformat more than JUST properties properly. Allows for Files and Component paths in deformat. - Properly deformat a LaunchCondition failure dialog box. - Resolve and save registry Keypaths. - Write the Features published keys more correctly. Still some problems. - First implementation of the WriteIniValues action. - Custom actions can have null in their target parameters, handle that without crashing. Also enable deformating of lines greater than 256 characters. - Added some more suminfo stubs. - An implementation of MsiSummaryInfoGetPropertyW based off of MsiSummaryInfoGetPropertyA. - Added stubs for MsiGetShortcutTargetA/W. - Do a very basic first implementation of MsiConfigureProductExW for msiexec /@ when run as a reboot. - Also add a number of new stubs for the office xp and 2k3 install and startup process. - Fix a copy and paste error, check for a null value and discard unneeded errors. - Do not limit properties to 256 characters when evaluating them. - Setting a record to an empty string is the same as making it null. - First pass implement ion of MsiQueryProductState[A/W] as well as a few fixes for MsiGetComponentPath. - Actually start on an implemention for MsiGetComponentPathW that should handle all keypaths that are files. - A reworking of format.c to remove the recursion, clean things up and stabilize behavior to match windows. - Cleanup processing a bit more. - Allow for nested keys to work properly. - MsiGetProperty does not return any error on missing properties. - The new Insert fixes now properly require ?,? instead of just ? for the Insert call. This fix modifies the MSI_SetProperty query to be correct. Michael Stefaniuc <mstefani@redhat.de> - Do not check for non NULL pointer before HeapFree'ing it. It's redundant. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Ulrich Czekalla <ulrich@codeweavers.com> - Handle 0 length buffers in MSI_FormatRecordW. - Remove unused buffer in deformat_string. Mike Hearn <mh@codeweavers.com> - Correctly ensure properties set from resolved directory paths are backslash terminated. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Marcus Meissner <meissner@suse.de> - Initialize rc in create_component_directory(). Alexandre Julliard <julliard@winehq.org> - Avoid unnecessary run-time initializations. svn path=/trunk/; revision=13518
2005-02-12 22:59:04 +00:00
enum msidbTextStyleStyleBits
{
msidbTextStyleStyleBitsBold = 0x00000001,
msidbTextStyleStyleBitsItalic = 0x00000002,
msidbTextStyleStyleBitsUnderline = 0x00000004,
msidbTextStyleStyleBitsStrike = 0x00000008,
};
enum msidbCustomActionType
{
msidbCustomActionTypeDll = 0x00000001,
msidbCustomActionTypeExe = 0x00000002,
msidbCustomActionTypeTextData = 0x00000003,
msidbCustomActionTypeJScript = 0x00000005,
msidbCustomActionTypeVBScript = 0x00000006,
msidbCustomActionTypeInstall = 0x00000007,
msidbCustomActionTypeBinaryData = 0x00000000,
msidbCustomActionTypeSourceFile = 0x00000010,
msidbCustomActionTypeDirectory = 0x00000020,
msidbCustomActionTypeProperty = 0x00000030,
msidbCustomActionTypeContinue = 0x00000040,
msidbCustomActionTypeAsync = 0x00000080,
msidbCustomActionTypeFirstSequence = 0x00000100,
msidbCustomActionTypeOncePerProcess = 0x00000200,
msidbCustomActionTypeClientRepeat = 0x00000300,
msidbCustomActionTypeInScript = 0x00000400,
msidbCustomActionTypeRollback = 0x00000100,
msidbCustomActionTypeCommit = 0x00000200,
msidbCustomActionTypeNoImpersonate = 0x00000800,
msidbCustomActionTypeTSAware = 0x00004000,
msidbCustomActionType64BitScript = 0x00001000,
msidbCustomActionTypeHideTarget = 0x00002000
};
enum msidbFeatureAttributes
{
msidbFeatureAttributesFavorLocal = 0x00000000,
msidbFeatureAttributesFavorSource = 0x00000001,
msidbFeatureAttributesFollowParent = 0x00000002,
msidbFeatureAttributesFavorAdvertise = 0x00000004,
msidbFeatureAttributesDisallowAdvertise = 0x00000008,
msidbFeatureAttributesUIDisallowAbsent = 0x00000010,
msidbFeatureAttributesNoUnsupportedAdvertise = 0x00000020
};
enum msidbComponentAttributes
{
msidbComponentAttributesLocalOnly = 0x00000000,
msidbComponentAttributesSourceOnly = 0x00000001,
msidbComponentAttributesOptional = 0x00000002,
msidbComponentAttributesRegistryKeyPath = 0x00000004,
msidbComponentAttributesSharedDllRefCount = 0x00000008,
msidbComponentAttributesPermanent = 0x00000010,
msidbComponentAttributesODBCDataSource = 0x00000020,
msidbComponentAttributesTransitive = 0x00000040,
msidbComponentAttributesNeverOverwrite = 0x00000080,
msidbComponentAttributes64bit = 0x00000100
};
enum msidbODBCDataSourceRegistration
{
msidbODBCDataSourceRegistrationPerMachine = 0x00000000,
msidbODBCDataSourceRegistrationPerUser = 0x00000001
};
Sync to Wine-20050524: Alexander Julliard <julliard@winehq.org> - Added rules for building import libraries in the individual dll makefiles, and added support for building a .def.a static import library too. Aric Stewart <aric@codeweavers.com> - Fix a few leaking object handles. - Correct user component publication. - Implement MsiEnumComponentQualifiers. - Implement Publish Components in order for MsiGetQualifiedComponent apis to work. Also implement MsiGetQualifiedComponent, or at least some of the functionality as it is supposed to install stuff if it is absent, which it does not do yet. - Correct query quoting based on Mike's patch. Also more error messages about return codes from custom actions and ignore an error that we should be ignoring. - Double terminate SZ_MULTI properly. - ClassInfo and ExtensionInfo are also written for ADVERTISED components. - Write the RegOwner and RegCompany keys as blank if they do not exist when doing the RegisterUser action. - Fix quoting on queries. - Respect '+' and '*' in WriteRegistryValues to only create the key if it does not already exist. Prevents overwriting values with NULL. - We cannot internally load the files in FileCost because that action may be skipped or not called. So do it in CostInitialize. - Quote the file path in SelfRegModules. - Do not write squished null guids to the feature registration. - Correctly use short filenames from uncompressed file sources. Also default feature and component install states to ABSENT instead of UNKNOWN. - Correct a problem with parse_data if binary data was not in full bytes. - More properly handle uncompressed file sources, fix the creating and parsing of Source Directories. - ExecuteAction runs the whole Execute table and not just from InstallValidate onward. To do this make sure we do not do the costing initialization work again if it is already done (by checking the CostingComplete Property). - A lot of work to refine feature states, setting the state affects the state of all child features and also respect features that want to default to something other than LOCAL. - Fix a few leaking object handles. - Correct user component publication. - Implement MsiEnumComponentQualifiers. - We have a stub for MsiGetUserInfoA we should use it. - A few small fixes. - Add a missing msiobj_release that was resulting in a leaked object with each MsiCreateRecord call. - Fix a leaking handle. - Make MsiCollectUserInfo more internally consistent. Thanks to Mike McCormack. - Fix a leaking handle in MsiConfigureProductExW. - Implement MsiGetProductCodeW. - Implement MsiGetUserInfoW. - Implement MsiCollectUserInfoA/W. - Implement MsiQueryFeatureStateW. - Correct a leaking hkey handle. - Expand some handling of special properties in MsiGetProductInfo. - Fix for the return codes for the Qualified component calls. They are not INSTALLSTATEs but rather success values. - Quoting fixes. Mike McCormack <mike@codeweavers.com> - Make sure that dialogs are only created and destroyed in a single thread. - Track memory allocations in the SQL parser. - Create the ORDER BY view in a single call. - Simplify parsing of the FROM keyword. - Improve parser error checking. - Simplify parsing of select query. - remove the unused utf8 field of an expression - make the parse result a single assignment at top level of parsing - abort parsing on a memory allocation failure - Only tables can be backquoted, strings must be single quoted. - Declare MsiExportDatabase* in the spec file, and fix a typo. - make sure to free the string table when closing the database - don't free szPersist in MsiOpenDatabase if it's not a string - Avoid some non-standard str functions. Francois Gouget <fgouget@free.fr> - Tweak the documentation to make winapi_check happy. Juan Lang <juan_lang@yahoo.com> - Don't fail in RegisterFonts if the Fonts table is missing. - Partially implement AppSearch for RegLocator-type searches. - Turn handled errors from ERRs to WARNs or TRACEs. Vincent Beron <vberon@mecano.gme.usherb.ca> - Use SUBLANG_NEUTRAL for French resources. Stefan Leichter <Stefan.Leichter@camLine.com> - Update version resource of msi.dll to current version shipped from windows update. - Added minimal implementation of MsiCreateAndVerifyInstallerDirectory. Marcus Meissner <marcus@jet.franken.de> - Set PhysicalMemory property from system data. svn path=/trunk/; revision=15537
2005-05-26 21:55:34 +00:00
enum msidbRegistryRoot
{
msidbRegistryRootClassesRoot = 0,
msidbRegistryRootCurrentUser = 1,
msidbRegistryRootLocalMachine = 2,
msidbRegistryRootUsers = 3,
};
enum msidbLocatorType
{
msidbLocatorTypeDirectory = 0x000,
msidbLocatorTypeFileName = 0x001,
msidbLocatorTypeRawValue = 0x002,
msidbLocatorType64bit = 0x010,
};
enum msidbServiceControlEvent
{
msidbServiceControlEventStart = 0x00000001,
msidbServiceControlEventStop = 0x00000002,
msidbServiceControlEventDelete = 0x00000008,
msidbServiceControlEventUninstallStart = 0x00000010,
msidbServiceControlEventUninstallStop = 0x00000020,
msidbServiceControlEventUninstallDelete = 0x00000080,
};
enum msidbServiceInstallErrorControl
{
msidbServiceInstallErrorControlVital = 0x00008000
};
enum msidbMoveFileOptions
{
msidbMoveFileOptionsMove = 0x00000001,
};
enum msidbAssemblyAttributes
{
msidbAssemblyAttributesURT = 0x00000000,
msidbAssemblyAttributesWin32 = 0x00000001,
};
enum msidbSumInfoSourceType
{
msidbSumInfoSourceTypeSFN = 0x00000001,
msidbSumInfoSourceTypeCompressed = 0x00000002,
msidbSumInfoSourceTypeAdminImage = 0x00000004,
msidbSumInfoSourceTypeLUAPackage = 0x00000008,
};
enum msidbRemoveFileInstallMode
{
msidbRemoveFileInstallModeOnInstall = 0x00000001,
msidbRemoveFileInstallModeOnRemove = 0x00000002,
msidbRemoveFileInstallModeOnBoth = 0x00000003,
};
enum
{
msidbIniFileActionAddLine = 0x00000000,
msidbIniFileActionCreateLine = 0x00000001,
msidbIniFileActionRemoveLine = 0x00000002,
msidbIniFileActionAddTag = 0x00000003,
msidbIniFileActionRemoveTag = 0x00000004
};
Sync to Wine-20050419: Mike McCormack <mike@codeweavers.com> - Load and display bitmaps in the dialogs. - Make sure there's only one place we allocate dialog controls. - Rename dupstrW to strdupW, and remove duplicate definition. - Move definition of string manipulation functions to msipriv.h. - Split out database functions, remove dependence on wine/unicode.h. - Fix loading of the summary information. - test cases for summary information - fix memory leaks - Implement summary information loading and saving. - Declare MsiExportDatabase* in the spec file, and fix a typo. - Replace instances of HeapAlloc/MultiByteToWideChar with the internally defined strdupAtoW. - Use strdup, implement MsiDatabaseImportA. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Peter Berg Larsen <pebl@math.ku.dk> - Janitorial: Get rid of strncpy/strncpyW. - Remove 2 identicals calls to strlenW. Jose Manuel Ferrer Ortiz <jmfo1982@yahoo.es> - Spanish translations updated. Aric Stewart <aric@codeweavers.com> - Implement Publish Components in order for MsiGetQualifiedComponent apis to work. Also implement MsiGetQualifiedComponent, or at least some of the functionality as it is supposed to install stuff if it is absent, which it does not do yet. - Make sure the GUID of the typelib we are registering matches the guid requested from MSI. If not search the given typelib file to find the typelib requested to register. - If running in UI mode, then display the UI mode dialogs at the end of the installs. Steven Edwards <steven_ed4153@yahoo.com> - Avoid using ver.h in favor of winver.h. Jakob Eriksson <jakov@vmlinux.org> - Get rid of HeapAlloc casts. Hans Leidekker <hans@it.vu.nl> - Dutch resource translation. Marcus Meissner <meissner@suse.de> - Fixed MsiDatabaseImportA, MsiDatabaseImportW, and MsiCreateAndVerifyInstallerDirectory stub parameter counts. Juan Lang <juan_lang@yahoo.com> - Log missing environment vars for easier debugging. svn path=/trunk/; revision=14823
2005-04-26 20:39:02 +00:00
/*
* Windows SDK braindamage alert
*
* PID_DICTIONARY and PID_CODEPAGE are defined by propidl.h too
* PID_SECURITY is defined in propidl.h with a different value!
* So these need to be undefined first.
*/
#ifdef PID_DICTIONARY
#undef PID_DICTIONARY
#endif
#ifdef PID_CODEPAGE
#undef PID_CODEPAGE
#endif
#ifdef PID_SECURITY
#undef PID_SECURITY
#endif
#define PID_DICTIONARY 0
#define PID_CODEPAGE 1
#define PID_TITLE 2
#define PID_SUBJECT 3
#define PID_AUTHOR 4
#define PID_KEYWORDS 5
#define PID_COMMENTS 6
#define PID_TEMPLATE 7
#define PID_LASTAUTHOR 8
#define PID_REVNUMBER 9
#define PID_EDITTIME 10
Sync to Wine-20050419: Mike McCormack <mike@codeweavers.com> - Load and display bitmaps in the dialogs. - Make sure there's only one place we allocate dialog controls. - Rename dupstrW to strdupW, and remove duplicate definition. - Move definition of string manipulation functions to msipriv.h. - Split out database functions, remove dependence on wine/unicode.h. - Fix loading of the summary information. - test cases for summary information - fix memory leaks - Implement summary information loading and saving. - Declare MsiExportDatabase* in the spec file, and fix a typo. - Replace instances of HeapAlloc/MultiByteToWideChar with the internally defined strdupAtoW. - Use strdup, implement MsiDatabaseImportA. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Peter Berg Larsen <pebl@math.ku.dk> - Janitorial: Get rid of strncpy/strncpyW. - Remove 2 identicals calls to strlenW. Jose Manuel Ferrer Ortiz <jmfo1982@yahoo.es> - Spanish translations updated. Aric Stewart <aric@codeweavers.com> - Implement Publish Components in order for MsiGetQualifiedComponent apis to work. Also implement MsiGetQualifiedComponent, or at least some of the functionality as it is supposed to install stuff if it is absent, which it does not do yet. - Make sure the GUID of the typelib we are registering matches the guid requested from MSI. If not search the given typelib file to find the typelib requested to register. - If running in UI mode, then display the UI mode dialogs at the end of the installs. Steven Edwards <steven_ed4153@yahoo.com> - Avoid using ver.h in favor of winver.h. Jakob Eriksson <jakov@vmlinux.org> - Get rid of HeapAlloc casts. Hans Leidekker <hans@it.vu.nl> - Dutch resource translation. Marcus Meissner <meissner@suse.de> - Fixed MsiDatabaseImportA, MsiDatabaseImportW, and MsiCreateAndVerifyInstallerDirectory stub parameter counts. Juan Lang <juan_lang@yahoo.com> - Log missing environment vars for easier debugging. svn path=/trunk/; revision=14823
2005-04-26 20:39:02 +00:00
#define PID_LASTPRINTED 11
#define PID_CREATE_DTM 12
#define PID_LASTSAVE_DTM 13
#define PID_PAGECOUNT 14
#define PID_WORDCOUNT 15
#define PID_CHARCOUNT 16
#define PID_THUMBNAIL 17
#define PID_APPNAME 18
#define PID_SECURITY 19
#define PID_MSIVERSION PID_PAGECOUNT
#define PID_MSISOURCE PID_WORDCOUNT
#define PID_MSIRESTRICT PID_CHARCOUNT
Sync to Wine-20050211 Mike McCormack <mike@codeweavers.com> - add support for Edit boxes in MSI dialogs - run the message loop when waiting for threads or processes - fix the dialog font - allow waiting on a handle while running the message loop - implement checkboxes in dialogs - use TextStyle enumeration instead of numbers - fix MSI_IterateRecords to return the correct count - Add more dialog controls, do something when they're clicked on. - Implement MsiPreviewDialog. - Implement and document MsiLoadString. - Added stub implementations for MsiPreviewDialog and MsiPreviewBillboard. - Fix MsiModifyView and MsiViewGetColumnInfo to use MSIRECORD* not MSIHANDLE. - Implement, test and document MsiDecomposeDescriptor. - Handle a number as a parameter for custom action 19. - Move OpenQuery into msiquery.c and make it non-static. - Fix and test inserting records. - Fix refcounting, use Interlocked functions. - MsiEvaluateCondition returns an error when passed NULL as a condition. - Lock record in MsiViewExecute, move stubs to end. - Fix MsiRecordSetString for NULL strings and update test case. - Fix a bug caused by freeing memory too soon in the table code. - Update headers, add MsiGetUserInfoA stub implementation. - Fix a memory leak in MsiConfigureProductExW. - Indentation and style cleanup. - implement MsiOpenPackageEx, and forward MsiOpenPackage there - make a MSI_CreatePackage function and use it in MSI_OpenPackage - move MsiOpenPackageA down with the rest of the API functions Juan Lang <juan_lang@yahoo.com> - Partially implement AppSearch action. - If a full path isn't specified, search across all fixed drives. - Simplify AppSearch error checking. - Identifiers evaluate to true if they are non-empty, regardless of value. Aric Stewart <aric@codeweavers.com> - action.c is getting too big, so split out all the handling of CustomActions into custom.c. Cleaned up a lot of the handling of custom actions including scripting actions and processing return codes. - Mike McCormack pointed out that MsiFormatRecord is basically the same as internal function deformat_string. So broke deformat_string out and updated it to function as MsiFormatRecord and implemented MsiFormatRecord. - A number of random fixes to action.c including properly calculating the length for the LocalPackage name, not forcing a reboot when really we should just return ERROR_INSTALL_SUSPEND and handling REG_MULTI_SZ now that we can deformat the properly. - Move the guid squishing functions out of msi.c and make a new registry.c file. Also clean up all the various registry keys we need to open and create to this module and modify the functions for msi.c to call these functions. - Added a few more stub implementations. - Implement custom action type 19, Halt install and display error message. - Continued work to simplify the ProcessAction call, also split it into a ProcessAction and ProcessUIAction for future dialog box work. Also fix a bug in deformat_string where i was not freeing the created record. - Make a temp file for each dll saved for custom actions. This prevents name collisions from causing custom actions to fail. - Do not track the temp files for custom actions based on the name from the table because then we get conflicts and files not tracked or cleaned up. - Add the RegisterUser action. - Implement RegisterExtensionInfo and RegisterMIMEInfo. - Add logic to be able to resolve the SourceDir based on CurrentPath. Also add logic to get the source locations of a file if it is not in a cabinet. - Finish up the framework by stubbing out all the remaining Standard actions. - A fix to deformat_string so it only returns a null return if you provided a null buffer. - Eliminate the giant if.. else if block from ACTION_ProcessAction in favor of a table of handlers. - Return code of the install should not depend on the return code of the final action. - Update component installed states as they are installed so that conditions based on component states are at least a little more correct. - Add icon and argument when regestering clsids. - Add a stub for ResolveSource because we do that work just not in ResolveSource like we should. - When quering a Component state return the correct state. - Enable the updating of Feature and thus the resulting component states. - Run the end of install actions for suspend and user exit states as well. - Start putting in place a currently running state for future ui use. - Use the new registry functions in registry.c. - Do not force a reboot, just return ERROR_INSTALL_SUSPEND and write some keys to the registry. - Quite a few fixes: - Allow for the queing of custom actions to trigger on the InstallExecute or InstallExecuteAgain actions. - allow for the queing of custom actions to trigger on InstallFinalize. - Properly set the CustomActionData property for said queued actions. - Implement RegisterProduct. - Beginning implementation of ForceReboot. - Don't kill install if an item to be duplicated does not exist. - Write out SourceList and LastUsedSource for resuming installs. - Use regsvr32 to register self reg dlls. - Implementations for SelfRegModules and PublishFeatures. - Set default ACTION property for Install. - Deformat more than JUST properties properly. Allows for Files and Component paths in deformat. - Properly deformat a LaunchCondition failure dialog box. - Resolve and save registry Keypaths. - Write the Features published keys more correctly. Still some problems. - First implementation of the WriteIniValues action. - Custom actions can have null in their target parameters, handle that without crashing. Also enable deformating of lines greater than 256 characters. - Added some more suminfo stubs. - An implementation of MsiSummaryInfoGetPropertyW based off of MsiSummaryInfoGetPropertyA. - Added stubs for MsiGetShortcutTargetA/W. - Do a very basic first implementation of MsiConfigureProductExW for msiexec /@ when run as a reboot. - Also add a number of new stubs for the office xp and 2k3 install and startup process. - Fix a copy and paste error, check for a null value and discard unneeded errors. - Do not limit properties to 256 characters when evaluating them. - Setting a record to an empty string is the same as making it null. - First pass implement ion of MsiQueryProductState[A/W] as well as a few fixes for MsiGetComponentPath. - Actually start on an implemention for MsiGetComponentPathW that should handle all keypaths that are files. - A reworking of format.c to remove the recursion, clean things up and stabilize behavior to match windows. - Cleanup processing a bit more. - Allow for nested keys to work properly. - MsiGetProperty does not return any error on missing properties. - The new Insert fixes now properly require ?,? instead of just ? for the Insert call. This fix modifies the MSI_SetProperty query to be correct. Michael Stefaniuc <mstefani@redhat.de> - Do not check for non NULL pointer before HeapFree'ing it. It's redundant. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Ulrich Czekalla <ulrich@codeweavers.com> - Handle 0 length buffers in MSI_FormatRecordW. - Remove unused buffer in deformat_string. Mike Hearn <mh@codeweavers.com> - Correctly ensure properties set from resolved directory paths are backslash terminated. Francois Gouget <fgouget@free.fr> - Assorted spelling fixes. Marcus Meissner <meissner@suse.de> - Initialize rc in create_component_directory(). Alexandre Julliard <julliard@winehq.org> - Avoid unnecessary run-time initializations. svn path=/trunk/; revision=13518
2005-02-12 22:59:04 +00:00
#endif /* __WINE_MSIDEFS_H */