2004-08-27 22:54:29 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2002,2003 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
|
2008-01-14 15:18:47 +00:00
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
2004-08-27 22:54:29 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __WINE_MSI_H
|
|
|
|
#define __WINE_MSI_H
|
|
|
|
|
2005-08-03 22:12:15 +00:00
|
|
|
#ifndef _MSI_NO_CRYPTO
|
2005-09-05 21:34:19 +00:00
|
|
|
#include <wincrypt.h>
|
2005-08-03 22:12:15 +00:00
|
|
|
#endif
|
|
|
|
|
2010-10-22 13:18:11 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2009-02-13 18:20:42 +00:00
|
|
|
typedef ULONG MSIHANDLE;
|
2004-08-27 22:54:29 +00:00
|
|
|
|
|
|
|
typedef enum tagINSTALLSTATE
|
|
|
|
{
|
Sync to Wine-0_9_1:
Ivan Leo Puoti <ivanleo@gmail.com>
- Fix some wrong prototypes.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- Passing NULL as the last two parameters to ReadFile is illegal and
actually causes a crash on windows. The attached patch fixes this.
Aric Stewart <aric@codeweavers.com>
- Force files to install if the REINSTALL property is set.
Mike McCormack <mike@codeweavers.com>
- Some installers don't call the CreateFolders action before the
InstallFiles action as MSDN specifies, but it still seems to work, so
make sure that we create component directories in the InstallFiles
action anyway.
- Create component folders in the CreateFolders action.
- If an action fails, print out its name as well as the error code. Use
%d for error codes so it's easy to match them up to something in
winerror.h.
- Rename load_dynamic_stringW to msi_dup_record_field to better describe
what it does, and replace a few instances with MSI_RecordGetString to
avoid allocating memory.
- Tidy up the RegisterProduct action a little.
- Create a stub function to apply a single table transform and call it
where we need to apply transforms.
- Enumerate the substorage transforms for any patches that are passed on
the command line with PATCH=. Need to implement
table_apply_transform() before this will do anything interesting.
- Simplify register_progid() and remove a fixed length buffer.
- Make enter and escape trigger the default and cancel buttons in
dialogs.
- Switch back to using IPicture to load images. LoadImage did the
resizing for us, but doesn't handle jpeg files and requires us writing
a temp file, whereas IPicture handles jpeg files and can load directly
from a stream.
- Remove unused package parameter of register_progid_base().
- Remove an incorrect comment and check for 0 being an invalid file
handle.
- Add missing semicolons that caused compile trouble on FreeBSD.
- Extract file directly to their target location, bypassing the need to
use temporary files and move files.
- Put the UI update code for cabinet file into a separate function.
- Translate INVALID_HANDLE_VALUE to zero for cabinet handles.
- Fix a memory leak in the cabinet extracting code.
- Fix passing of NULL pointers to MsiDecomposeDescriptor and add a
test.
- Fix parameter handling in MsiSetTargetPath, and add a test for it.
- Deleted two buggy functions that incorrectly and inefficiently check
whether a row already exists in a table, and replaced them with a call
to an existing working function that does the same thing correctly.
- Fix and test MsiGetProperty and MsiSetProperty.
- Add a stub implementation of msi.MsiSetMode.
- NULL and empty strings are the same in conditions.
- Add a bunch of tests for MsiEvaluateCondition and make them pass.
- Fix error handling in MsiEvaluateCondition.
- Create the +msidb debug channel for msi database code.
- Implement transforms. This still includes some debugging code which
can be enabled by setting debug_transform to 1 in the relevant
places.
- Define NONAMELESSUNION and NONAMELESSSTRUCT for older compilers.
- Remove some redundant null pointer checks.
- Make sure to unregister all the classes that were registered when msi
is unloaded, so we can register again cleanly.
- Fix a memory leak.
- Implement the RemoveFiles action.
- Add a read-only implementation of the SelectionTree control.
- Make sure we only CoUninitialize after successfully initializing.
Fix the address of the returned IShellLinkDataList interface.
- Use an enumeration for file states.
- Handle MaskEdit masks containing dashes and other constant
characters.
- Stub implementation for MsiAdvertiseScriptA/W.
- Add a stub for the AllocateRegistrySpace action.
- Explicitly check for MSICONDITION_TRUE being returned from
MsiEvaluateCondition.
- Stub implementation for MsiGetFileHashA/W.
- Define MSIDBOPEN_ constants using LPCWSTR when compiling Wine.
- Improve MsiUseFeatureEx and MsiGetFeatureState a little, add some
simple test cases.
- Use msi_get_property_int() in a few more places.
- Implement MsiGetFeatureUsageA and MsiUseFeature(Ex)A using their W
versions.
- Use "static const" rather than "const static" as gcc -W complains
about the former.
- Add an implementation for MsiGetShortcutTargetA/W.
- Don't change the UI level during ExecuteAction.
- Return an error in MsiGetComponentPathW if passed a null component.
- Remove the unused 1st parameter of ACTION_VerifyComponentForAction.
- Fix MsiGetPropertyA/W spec declarations.
- Create an internal handle-free api for reading MSI database summary
information.
svn path=/trunk/; revision=19307
2005-11-17 20:49:37 +00:00
|
|
|
INSTALLSTATE_NOTUSED = -7,
|
2004-08-27 22:54:29 +00:00
|
|
|
INSTALLSTATE_BADCONFIG = -6,
|
|
|
|
INSTALLSTATE_INCOMPLETE = -5,
|
|
|
|
INSTALLSTATE_SOURCEABSENT = -4,
|
|
|
|
INSTALLSTATE_MOREDATA = -3,
|
|
|
|
INSTALLSTATE_INVALIDARG = -2,
|
|
|
|
INSTALLSTATE_UNKNOWN = -1,
|
|
|
|
INSTALLSTATE_BROKEN = 0,
|
|
|
|
INSTALLSTATE_ADVERTISED = 1,
|
|
|
|
INSTALLSTATE_ABSENT = 2,
|
|
|
|
INSTALLSTATE_LOCAL = 3,
|
|
|
|
INSTALLSTATE_SOURCE = 4,
|
|
|
|
INSTALLSTATE_DEFAULT = 5
|
|
|
|
} INSTALLSTATE;
|
|
|
|
|
2008-12-27 15:12:15 +00:00
|
|
|
typedef enum tagMSIPATCHSTATE
|
|
|
|
{
|
|
|
|
MSIPATCHSTATE_INVALID = 0,
|
|
|
|
MSIPATCHSTATE_APPLIED = 1,
|
|
|
|
MSIPATCHSTATE_SUPERSEDED = 2,
|
|
|
|
MSIPATCHSTATE_OBSOLETED = 4,
|
|
|
|
MSIPATCHSTATE_REGISTERED = 8,
|
|
|
|
MSIPATCHSTATE_ALL = (MSIPATCHSTATE_APPLIED | MSIPATCHSTATE_SUPERSEDED |
|
|
|
|
MSIPATCHSTATE_OBSOLETED | MSIPATCHSTATE_REGISTERED)
|
|
|
|
} MSIPATCHSTATE;
|
|
|
|
|
2004-08-27 22:54:29 +00:00
|
|
|
typedef enum tagINSTALLUILEVEL
|
|
|
|
{
|
|
|
|
INSTALLUILEVEL_NOCHANGE = 0,
|
|
|
|
INSTALLUILEVEL_DEFAULT = 1,
|
|
|
|
INSTALLUILEVEL_NONE = 2,
|
|
|
|
INSTALLUILEVEL_BASIC = 3,
|
|
|
|
INSTALLUILEVEL_REDUCED = 4,
|
|
|
|
INSTALLUILEVEL_FULL = 5,
|
|
|
|
INSTALLUILEVEL_HIDECANCEL = 0x20,
|
|
|
|
INSTALLUILEVEL_PROGRESSONLY = 0x40,
|
|
|
|
INSTALLUILEVEL_ENDDIALOG = 0x80,
|
|
|
|
INSTALLUILEVEL_SOURCERESONLY = 0x100
|
|
|
|
} INSTALLUILEVEL;
|
|
|
|
|
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
|
|
|
typedef enum tagUSERINFOSTATE
|
|
|
|
{
|
|
|
|
USERINFOSTATE_MOREDATA = -3,
|
|
|
|
USERINFOSTATE_INVALIDARG = -2,
|
|
|
|
USERINFOSTATE_UNKNOWN = -1,
|
|
|
|
USERINFOSTATE_ABSENT = 0,
|
|
|
|
USERINFOSTATE_PRESENT = 1,
|
|
|
|
} USERINFOSTATE;
|
|
|
|
|
2004-08-27 22:54:29 +00:00
|
|
|
typedef enum tagINSTALLLEVEL
|
|
|
|
{
|
|
|
|
INSTALLLEVEL_DEFAULT = 0,
|
|
|
|
INSTALLLEVEL_MINIMUM = 1,
|
|
|
|
INSTALLLEVEL_MAXIMUM = 0xFFFF
|
|
|
|
} INSTALLLEVEL;
|
|
|
|
|
|
|
|
typedef enum tagINSTALLMESSAGE
|
|
|
|
{
|
|
|
|
INSTALLMESSAGE_FATALEXIT = 0,
|
|
|
|
INSTALLMESSAGE_ERROR = 0x01000000,
|
|
|
|
INSTALLMESSAGE_WARNING = 0x02000000,
|
|
|
|
INSTALLMESSAGE_USER = 0x03000000,
|
|
|
|
INSTALLMESSAGE_INFO = 0x04000000,
|
|
|
|
INSTALLMESSAGE_FILESINUSE = 0x05000000,
|
|
|
|
INSTALLMESSAGE_RESOLVESOURCE = 0x06000000,
|
|
|
|
INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000,
|
|
|
|
INSTALLMESSAGE_ACTIONSTART = 0x08000000,
|
|
|
|
INSTALLMESSAGE_ACTIONDATA = 0x09000000,
|
|
|
|
INSTALLMESSAGE_PROGRESS = 0x0a000000,
|
|
|
|
INSTALLMESSAGE_COMMONDATA = 0x0b000000,
|
|
|
|
INSTALLMESSAGE_INITIALIZE = 0x0c000000,
|
|
|
|
INSTALLMESSAGE_TERMINATE = 0x0d000000,
|
|
|
|
INSTALLMESSAGE_SHOWDIALOG = 0x0e000000
|
|
|
|
} INSTALLMESSAGE;
|
|
|
|
|
|
|
|
typedef enum tagREINSTALLMODE
|
|
|
|
{
|
|
|
|
REINSTALLMODE_REPAIR = 0x00000001,
|
|
|
|
REINSTALLMODE_FILEMISSING = 0x00000002,
|
|
|
|
REINSTALLMODE_FILEOLDERVERSION = 0x00000004,
|
|
|
|
REINSTALLMODE_FILEEQUALVERSION = 0x00000008,
|
|
|
|
REINSTALLMODE_FILEEXACT = 0x00000010,
|
|
|
|
REINSTALLMODE_FILEVERIFY = 0x00000020,
|
|
|
|
REINSTALLMODE_FILEREPLACE = 0x00000040,
|
|
|
|
REINSTALLMODE_MACHINEDATA = 0x00000080,
|
|
|
|
REINSTALLMODE_USERDATA = 0x00000100,
|
|
|
|
REINSTALLMODE_SHORTCUT = 0x00000200,
|
|
|
|
REINSTALLMODE_PACKAGE = 0x00000400
|
|
|
|
} REINSTALLMODE;
|
|
|
|
|
|
|
|
typedef enum tagINSTALLLOGMODE
|
|
|
|
{
|
|
|
|
INSTALLLOGMODE_FATALEXIT = (1 << (INSTALLMESSAGE_FATALEXIT >> 24)),
|
|
|
|
INSTALLLOGMODE_ERROR = (1 << (INSTALLMESSAGE_ERROR >> 24)),
|
|
|
|
INSTALLLOGMODE_WARNING = (1 << (INSTALLMESSAGE_WARNING >> 24)),
|
|
|
|
INSTALLLOGMODE_USER = (1 << (INSTALLMESSAGE_USER >> 24)),
|
|
|
|
INSTALLLOGMODE_INFO = (1 << (INSTALLMESSAGE_INFO >> 24)),
|
|
|
|
INSTALLLOGMODE_RESOLVESOURCE = (1 << (INSTALLMESSAGE_RESOLVESOURCE >> 24)),
|
|
|
|
INSTALLLOGMODE_OUTOFDISKSPACE = (1 << (INSTALLMESSAGE_OUTOFDISKSPACE >> 24)),
|
|
|
|
INSTALLLOGMODE_ACTIONSTART = (1 << (INSTALLMESSAGE_ACTIONSTART >> 24)),
|
|
|
|
INSTALLLOGMODE_ACTIONDATA = (1 << (INSTALLMESSAGE_ACTIONDATA >> 24)),
|
|
|
|
INSTALLLOGMODE_COMMONDATA = (1 << (INSTALLMESSAGE_COMMONDATA >> 24)),
|
|
|
|
INSTALLLOGMODE_PROPERTYDUMP = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),
|
|
|
|
INSTALLLOGMODE_VERBOSE = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)),
|
|
|
|
INSTALLLOGMODE_EXTRADEBUG = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),
|
|
|
|
INSTALLLOGMODE_PROGRESS = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),
|
|
|
|
INSTALLLOGMODE_INITIALIZE = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)),
|
|
|
|
INSTALLLOGMODE_TERMINATE = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),
|
|
|
|
INSTALLLOGMODE_SHOWDIALOG = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24))
|
|
|
|
} INSTALLLOGMODE;
|
|
|
|
|
|
|
|
typedef enum tagINSTALLLOGATTRIBUTES
|
|
|
|
{
|
|
|
|
INSTALLLOGATTRIBUTES_APPEND = 0x00000001,
|
|
|
|
INSTALLLOGATTRIBUTES_FLUSHEACHLINE = 0x00000002
|
|
|
|
} INSTALLLOGATTRIBUTES;
|
|
|
|
|
Sync to Wine-0_9_1:
Ivan Leo Puoti <ivanleo@gmail.com>
- Fix some wrong prototypes.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- Passing NULL as the last two parameters to ReadFile is illegal and
actually causes a crash on windows. The attached patch fixes this.
Aric Stewart <aric@codeweavers.com>
- Force files to install if the REINSTALL property is set.
Mike McCormack <mike@codeweavers.com>
- Some installers don't call the CreateFolders action before the
InstallFiles action as MSDN specifies, but it still seems to work, so
make sure that we create component directories in the InstallFiles
action anyway.
- Create component folders in the CreateFolders action.
- If an action fails, print out its name as well as the error code. Use
%d for error codes so it's easy to match them up to something in
winerror.h.
- Rename load_dynamic_stringW to msi_dup_record_field to better describe
what it does, and replace a few instances with MSI_RecordGetString to
avoid allocating memory.
- Tidy up the RegisterProduct action a little.
- Create a stub function to apply a single table transform and call it
where we need to apply transforms.
- Enumerate the substorage transforms for any patches that are passed on
the command line with PATCH=. Need to implement
table_apply_transform() before this will do anything interesting.
- Simplify register_progid() and remove a fixed length buffer.
- Make enter and escape trigger the default and cancel buttons in
dialogs.
- Switch back to using IPicture to load images. LoadImage did the
resizing for us, but doesn't handle jpeg files and requires us writing
a temp file, whereas IPicture handles jpeg files and can load directly
from a stream.
- Remove unused package parameter of register_progid_base().
- Remove an incorrect comment and check for 0 being an invalid file
handle.
- Add missing semicolons that caused compile trouble on FreeBSD.
- Extract file directly to their target location, bypassing the need to
use temporary files and move files.
- Put the UI update code for cabinet file into a separate function.
- Translate INVALID_HANDLE_VALUE to zero for cabinet handles.
- Fix a memory leak in the cabinet extracting code.
- Fix passing of NULL pointers to MsiDecomposeDescriptor and add a
test.
- Fix parameter handling in MsiSetTargetPath, and add a test for it.
- Deleted two buggy functions that incorrectly and inefficiently check
whether a row already exists in a table, and replaced them with a call
to an existing working function that does the same thing correctly.
- Fix and test MsiGetProperty and MsiSetProperty.
- Add a stub implementation of msi.MsiSetMode.
- NULL and empty strings are the same in conditions.
- Add a bunch of tests for MsiEvaluateCondition and make them pass.
- Fix error handling in MsiEvaluateCondition.
- Create the +msidb debug channel for msi database code.
- Implement transforms. This still includes some debugging code which
can be enabled by setting debug_transform to 1 in the relevant
places.
- Define NONAMELESSUNION and NONAMELESSSTRUCT for older compilers.
- Remove some redundant null pointer checks.
- Make sure to unregister all the classes that were registered when msi
is unloaded, so we can register again cleanly.
- Fix a memory leak.
- Implement the RemoveFiles action.
- Add a read-only implementation of the SelectionTree control.
- Make sure we only CoUninitialize after successfully initializing.
Fix the address of the returned IShellLinkDataList interface.
- Use an enumeration for file states.
- Handle MaskEdit masks containing dashes and other constant
characters.
- Stub implementation for MsiAdvertiseScriptA/W.
- Add a stub for the AllocateRegistrySpace action.
- Explicitly check for MSICONDITION_TRUE being returned from
MsiEvaluateCondition.
- Stub implementation for MsiGetFileHashA/W.
- Define MSIDBOPEN_ constants using LPCWSTR when compiling Wine.
- Improve MsiUseFeatureEx and MsiGetFeatureState a little, add some
simple test cases.
- Use msi_get_property_int() in a few more places.
- Implement MsiGetFeatureUsageA and MsiUseFeature(Ex)A using their W
versions.
- Use "static const" rather than "const static" as gcc -W complains
about the former.
- Add an implementation for MsiGetShortcutTargetA/W.
- Don't change the UI level during ExecuteAction.
- Return an error in MsiGetComponentPathW if passed a null component.
- Remove the unused 1st parameter of ACTION_VerifyComponentForAction.
- Fix MsiGetPropertyA/W spec declarations.
- Create an internal handle-free api for reading MSI database summary
information.
svn path=/trunk/; revision=19307
2005-11-17 20:49:37 +00:00
|
|
|
typedef enum tagINSTALLMODE
|
|
|
|
{
|
|
|
|
INSTALLMODE_NODETECTION_ANY = -4,
|
|
|
|
INSTALLMODE_NOSOURCERESOLUTION = -3,
|
|
|
|
INSTALLMODE_NODETECTION = -2,
|
|
|
|
INSTALLMODE_EXISTING = -1,
|
|
|
|
INSTALLMODE_DEFAULT = 0
|
|
|
|
} INSTALLMODE;
|
|
|
|
|
2004-08-27 22:54:29 +00:00
|
|
|
typedef enum tagADVERTISEFLAGS
|
|
|
|
{
|
|
|
|
ADVERTISEFLAGS_MACHINEASSIGN = 0,
|
|
|
|
ADVERTISEFLAGS_USERASSIGN = 1
|
|
|
|
} ADVERTISEFLAGS;
|
|
|
|
|
Sync to Wine-0_9_1:
Ivan Leo Puoti <ivanleo@gmail.com>
- Fix some wrong prototypes.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- Passing NULL as the last two parameters to ReadFile is illegal and
actually causes a crash on windows. The attached patch fixes this.
Aric Stewart <aric@codeweavers.com>
- Force files to install if the REINSTALL property is set.
Mike McCormack <mike@codeweavers.com>
- Some installers don't call the CreateFolders action before the
InstallFiles action as MSDN specifies, but it still seems to work, so
make sure that we create component directories in the InstallFiles
action anyway.
- Create component folders in the CreateFolders action.
- If an action fails, print out its name as well as the error code. Use
%d for error codes so it's easy to match them up to something in
winerror.h.
- Rename load_dynamic_stringW to msi_dup_record_field to better describe
what it does, and replace a few instances with MSI_RecordGetString to
avoid allocating memory.
- Tidy up the RegisterProduct action a little.
- Create a stub function to apply a single table transform and call it
where we need to apply transforms.
- Enumerate the substorage transforms for any patches that are passed on
the command line with PATCH=. Need to implement
table_apply_transform() before this will do anything interesting.
- Simplify register_progid() and remove a fixed length buffer.
- Make enter and escape trigger the default and cancel buttons in
dialogs.
- Switch back to using IPicture to load images. LoadImage did the
resizing for us, but doesn't handle jpeg files and requires us writing
a temp file, whereas IPicture handles jpeg files and can load directly
from a stream.
- Remove unused package parameter of register_progid_base().
- Remove an incorrect comment and check for 0 being an invalid file
handle.
- Add missing semicolons that caused compile trouble on FreeBSD.
- Extract file directly to their target location, bypassing the need to
use temporary files and move files.
- Put the UI update code for cabinet file into a separate function.
- Translate INVALID_HANDLE_VALUE to zero for cabinet handles.
- Fix a memory leak in the cabinet extracting code.
- Fix passing of NULL pointers to MsiDecomposeDescriptor and add a
test.
- Fix parameter handling in MsiSetTargetPath, and add a test for it.
- Deleted two buggy functions that incorrectly and inefficiently check
whether a row already exists in a table, and replaced them with a call
to an existing working function that does the same thing correctly.
- Fix and test MsiGetProperty and MsiSetProperty.
- Add a stub implementation of msi.MsiSetMode.
- NULL and empty strings are the same in conditions.
- Add a bunch of tests for MsiEvaluateCondition and make them pass.
- Fix error handling in MsiEvaluateCondition.
- Create the +msidb debug channel for msi database code.
- Implement transforms. This still includes some debugging code which
can be enabled by setting debug_transform to 1 in the relevant
places.
- Define NONAMELESSUNION and NONAMELESSSTRUCT for older compilers.
- Remove some redundant null pointer checks.
- Make sure to unregister all the classes that were registered when msi
is unloaded, so we can register again cleanly.
- Fix a memory leak.
- Implement the RemoveFiles action.
- Add a read-only implementation of the SelectionTree control.
- Make sure we only CoUninitialize after successfully initializing.
Fix the address of the returned IShellLinkDataList interface.
- Use an enumeration for file states.
- Handle MaskEdit masks containing dashes and other constant
characters.
- Stub implementation for MsiAdvertiseScriptA/W.
- Add a stub for the AllocateRegistrySpace action.
- Explicitly check for MSICONDITION_TRUE being returned from
MsiEvaluateCondition.
- Stub implementation for MsiGetFileHashA/W.
- Define MSIDBOPEN_ constants using LPCWSTR when compiling Wine.
- Improve MsiUseFeatureEx and MsiGetFeatureState a little, add some
simple test cases.
- Use msi_get_property_int() in a few more places.
- Implement MsiGetFeatureUsageA and MsiUseFeature(Ex)A using their W
versions.
- Use "static const" rather than "const static" as gcc -W complains
about the former.
- Add an implementation for MsiGetShortcutTargetA/W.
- Don't change the UI level during ExecuteAction.
- Return an error in MsiGetComponentPathW if passed a null component.
- Remove the unused 1st parameter of ACTION_VerifyComponentForAction.
- Fix MsiGetPropertyA/W spec declarations.
- Create an internal handle-free api for reading MSI database summary
information.
svn path=/trunk/; revision=19307
2005-11-17 20:49:37 +00:00
|
|
|
typedef enum tagSCRIPTFLAGS
|
|
|
|
{
|
|
|
|
SCRIPTFLAGS_CACHEINFO = 1,
|
|
|
|
SCRIPTFLAGS_SHORTCUTS = 4,
|
|
|
|
SCRIPTFLAGS_MACHINEASSIGN = 8,
|
|
|
|
SCRIPTFLAGS_REGDATA_APPINFO = 0x10,
|
|
|
|
SCRIPTFLAGS_REGDATA_CNFGINFO = 0x20,
|
|
|
|
SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST = 0x40,
|
|
|
|
SCRIPTFLAGS_REGDATA_CLASSINFO = 0x80,
|
|
|
|
SCRIPTFLAGS_REGDATA_EXTENSIONINFO = 0x100,
|
|
|
|
} SCRIPTFLAGS;
|
|
|
|
|
2004-08-27 22:54:29 +00:00
|
|
|
typedef enum tagINSTALLTYPE
|
|
|
|
{
|
|
|
|
INSTALLTYPE_DEFAULT = 0,
|
2008-01-14 15:18:47 +00:00
|
|
|
INSTALLTYPE_NETWORK_IMAGE = 1,
|
|
|
|
INSTALLTYPE_SINGLE_INSTANCE = 2,
|
2004-08-27 22:54:29 +00:00
|
|
|
} INSTALLTYPE;
|
|
|
|
|
2005-08-12 17:07:28 +00:00
|
|
|
typedef enum tagMSIINSTALLCONTEXT
|
|
|
|
{
|
|
|
|
MSIINSTALLCONTEXT_FIRSTVISIBLE = 0,
|
|
|
|
MSIINSTALLCONTEXT_NONE = 0,
|
|
|
|
MSIINSTALLCONTEXT_USERMANAGED = 1,
|
|
|
|
MSIINSTALLCONTEXT_USERUNMANAGED = 2,
|
|
|
|
MSIINSTALLCONTEXT_MACHINE = 4,
|
|
|
|
MSIINSTALLCONTEXT_ALL = (MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED | MSIINSTALLCONTEXT_MACHINE),
|
|
|
|
MSIINSTALLCONTEXT_ALLUSERMANAGED= 8,
|
|
|
|
} MSIINSTALLCONTEXT;
|
|
|
|
|
|
|
|
typedef enum tagMSISOURCETYPE
|
|
|
|
{
|
|
|
|
MSISOURCETYPE_UNKNOWN = 0x00000000L,
|
|
|
|
MSISOURCETYPE_NETWORK = 0x00000001L,
|
|
|
|
MSISOURCETYPE_URL = 0x00000002L,
|
|
|
|
MSISOURCETYPE_MEDIA = 0x00000004
|
|
|
|
} MSISOURCETYPE;
|
|
|
|
|
|
|
|
typedef enum tagMSICODE
|
|
|
|
{
|
|
|
|
MSICODE_PRODUCT = 0x00000000L,
|
|
|
|
MSICODE_PATCH = 0x40000000L
|
|
|
|
} MSICODE;
|
|
|
|
|
Sync to Wine-0_9_1:
Ivan Leo Puoti <ivanleo@gmail.com>
- Fix some wrong prototypes.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- Passing NULL as the last two parameters to ReadFile is illegal and
actually causes a crash on windows. The attached patch fixes this.
Aric Stewart <aric@codeweavers.com>
- Force files to install if the REINSTALL property is set.
Mike McCormack <mike@codeweavers.com>
- Some installers don't call the CreateFolders action before the
InstallFiles action as MSDN specifies, but it still seems to work, so
make sure that we create component directories in the InstallFiles
action anyway.
- Create component folders in the CreateFolders action.
- If an action fails, print out its name as well as the error code. Use
%d for error codes so it's easy to match them up to something in
winerror.h.
- Rename load_dynamic_stringW to msi_dup_record_field to better describe
what it does, and replace a few instances with MSI_RecordGetString to
avoid allocating memory.
- Tidy up the RegisterProduct action a little.
- Create a stub function to apply a single table transform and call it
where we need to apply transforms.
- Enumerate the substorage transforms for any patches that are passed on
the command line with PATCH=. Need to implement
table_apply_transform() before this will do anything interesting.
- Simplify register_progid() and remove a fixed length buffer.
- Make enter and escape trigger the default and cancel buttons in
dialogs.
- Switch back to using IPicture to load images. LoadImage did the
resizing for us, but doesn't handle jpeg files and requires us writing
a temp file, whereas IPicture handles jpeg files and can load directly
from a stream.
- Remove unused package parameter of register_progid_base().
- Remove an incorrect comment and check for 0 being an invalid file
handle.
- Add missing semicolons that caused compile trouble on FreeBSD.
- Extract file directly to their target location, bypassing the need to
use temporary files and move files.
- Put the UI update code for cabinet file into a separate function.
- Translate INVALID_HANDLE_VALUE to zero for cabinet handles.
- Fix a memory leak in the cabinet extracting code.
- Fix passing of NULL pointers to MsiDecomposeDescriptor and add a
test.
- Fix parameter handling in MsiSetTargetPath, and add a test for it.
- Deleted two buggy functions that incorrectly and inefficiently check
whether a row already exists in a table, and replaced them with a call
to an existing working function that does the same thing correctly.
- Fix and test MsiGetProperty and MsiSetProperty.
- Add a stub implementation of msi.MsiSetMode.
- NULL and empty strings are the same in conditions.
- Add a bunch of tests for MsiEvaluateCondition and make them pass.
- Fix error handling in MsiEvaluateCondition.
- Create the +msidb debug channel for msi database code.
- Implement transforms. This still includes some debugging code which
can be enabled by setting debug_transform to 1 in the relevant
places.
- Define NONAMELESSUNION and NONAMELESSSTRUCT for older compilers.
- Remove some redundant null pointer checks.
- Make sure to unregister all the classes that were registered when msi
is unloaded, so we can register again cleanly.
- Fix a memory leak.
- Implement the RemoveFiles action.
- Add a read-only implementation of the SelectionTree control.
- Make sure we only CoUninitialize after successfully initializing.
Fix the address of the returned IShellLinkDataList interface.
- Use an enumeration for file states.
- Handle MaskEdit masks containing dashes and other constant
characters.
- Stub implementation for MsiAdvertiseScriptA/W.
- Add a stub for the AllocateRegistrySpace action.
- Explicitly check for MSICONDITION_TRUE being returned from
MsiEvaluateCondition.
- Stub implementation for MsiGetFileHashA/W.
- Define MSIDBOPEN_ constants using LPCWSTR when compiling Wine.
- Improve MsiUseFeatureEx and MsiGetFeatureState a little, add some
simple test cases.
- Use msi_get_property_int() in a few more places.
- Implement MsiGetFeatureUsageA and MsiUseFeature(Ex)A using their W
versions.
- Use "static const" rather than "const static" as gcc -W complains
about the former.
- Add an implementation for MsiGetShortcutTargetA/W.
- Don't change the UI level during ExecuteAction.
- Return an error in MsiGetComponentPathW if passed a null component.
- Remove the unused 1st parameter of ACTION_VerifyComponentForAction.
- Fix MsiGetPropertyA/W spec declarations.
- Create an internal handle-free api for reading MSI database summary
information.
svn path=/trunk/; revision=19307
2005-11-17 20:49:37 +00:00
|
|
|
typedef struct _MSIFILEHASHINFO {
|
|
|
|
ULONG dwFileHashInfoSize;
|
|
|
|
ULONG dwData[4];
|
|
|
|
} MSIFILEHASHINFO, *PMSIFILEHASHINFO;
|
|
|
|
|
2008-12-27 15:12:15 +00:00
|
|
|
typedef enum tagMSIPATCHDATATYPE
|
|
|
|
{
|
|
|
|
MSIPATCH_DATATYPE_PATCHFILE = 0,
|
|
|
|
MSIPATCH_DATATYPE_XMLPATH = 1,
|
|
|
|
MSIPATCH_DATATYPE_XMLBLOB = 2,
|
|
|
|
} MSIPATCHDATATYPE, *PMSIPATCHDATATYPE;
|
|
|
|
|
|
|
|
typedef struct tagMSIPATCHSEQUENCEINFOA
|
|
|
|
{
|
|
|
|
LPCSTR szPatchData;
|
|
|
|
MSIPATCHDATATYPE ePatchDataType;
|
|
|
|
DWORD dwOrder;
|
|
|
|
UINT uStatus;
|
|
|
|
} MSIPATCHSEQUENCEINFOA, *PMSIPATCHSEQUENCEINFOA;
|
|
|
|
|
|
|
|
typedef struct tagMSIPATCHSEQUENCEINFOW
|
|
|
|
{
|
|
|
|
LPCWSTR szPatchData;
|
|
|
|
MSIPATCHDATATYPE ePatchDataType;
|
|
|
|
DWORD dwOrder;
|
|
|
|
UINT uStatus;
|
|
|
|
} MSIPATCHSEQUENCEINFOW, *PMSIPATCHSEQUENCEINFOW;
|
|
|
|
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MAX_FEATURE_CHARS 38
|
|
|
|
|
2009-10-17 21:16:57 +00:00
|
|
|
#define ERROR_PATCH_TARGET_NOT_FOUND 1642
|
|
|
|
|
2005-08-12 17:07:28 +00:00
|
|
|
/* Strings defined in msi.h */
|
|
|
|
/* Advertised Information */
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PACKAGENAMEA "PackageName"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PACKAGENAMEW[] = {'P','a','c','k','a','g','e','N','a','m','e',0};
|
|
|
|
#define INSTALLPROPERTY_PACKAGENAME WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGENAME)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_TRANSFORMSA "Transforms"
|
|
|
|
static const WCHAR INSTALLPROPERTY_TRANSFORMSW[] = {'T','r','a','n','s','f','o','r','m','s',0};
|
|
|
|
#define INSTALLPROPERTY_TRANSFORMS WINELIB_NAME_AW(INSTALLPROPERTY_TRANSFORMS)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_LANGUAGEA "Language"
|
|
|
|
static const WCHAR INSTALLPROPERTY_LANGUAGEW[] = {'L','a','n','g','u','a','g','e',0};
|
|
|
|
#define INSTALLPROPERTY_LANGUAGE WINELIB_NAME_AW(INSTALLPROPERTY_LANGUAGE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PRODUCTNAMEA "ProductName"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PRODUCTNAMEW[] = {'P','r','o','d','u','c','t','N','a','m','e',0};
|
|
|
|
#define INSTALLPROPERTY_PRODUCTNAME WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTNAME)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_ASSIGNMENTTYPEA "AssignmentType"
|
|
|
|
static const WCHAR INSTALLPROPERTY_ASSIGNMENTTYPEW[] = {'A','s','s','i','g','n','m','e','n','t','T','y','p','e',0};
|
|
|
|
#define INSTALLPROPERTY_ASSIGNMENTTYPE WINELIB_NAME_AW(INSTALLPROPERTY_ASSIGNMENTTYPE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PACKAGECODEA "PackageCode"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PACKAGECODEW[] = {'P','a','c','k','a','g','e','C','o','d','e',0};
|
|
|
|
#define INSTALLPROPERTY_PACKAGECODE WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGECODE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_VERSIONA "Version"
|
|
|
|
static const WCHAR INSTALLPROPERTY_VERSIONW[]= {'V','e','r','s','i','o','n',0};
|
|
|
|
#define INSTALLPROPERTY_VERSION WINELIB_NAME_AW(INSTALLPROPERTY_VERSION)
|
|
|
|
|
|
|
|
/* MSI version 1.1 and above */
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PRODUCTICONA "ProductIcon"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PRODUCTICONW[] = {'P','r','o','d','u','c','t','I','c','o','n',0};
|
|
|
|
#define INSTALLPROPERTY_PRODUCTICON WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTICON)
|
|
|
|
|
|
|
|
/* MSI version 1.5 and above */
|
|
|
|
#define INSTALLPROPERTY_INSTANCETYPEA "InstanceType"
|
|
|
|
static const WCHAR INSTALLPROPERTY_INSTANCETYPEW[] = {'I','n','s','t','a','n','c','e','T','y','p','e',0};
|
|
|
|
#define INSTALLPROPERTY_INSTANCETYPE WINELIB_NAME_AW(INSTALLPROPERTY_INSTANCETYPE)
|
|
|
|
|
|
|
|
/* MSI version 3 and above */
|
|
|
|
#define INSTALLPROPERTY_AUTHORIZED_LUA_APPA "AuthorizedLUAApp"
|
|
|
|
static const WCHAR INSTALLPROPERTY_AUTHORIZED_LUA_APPW[] = {'A','u','t','h','o','r','i','z','e','d','L','U','A','A','p','p',0};
|
|
|
|
#define INSTALLPROPERTY_AUTHORIZED_LUA_APP WINELIB_NAME_AW(INSTALLPROPERTY_AUTHORIZED_LUA_APP)
|
|
|
|
|
|
|
|
|
|
|
|
/* Installed Information */
|
|
|
|
#define INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA "InstalledProductName"
|
|
|
|
static const WCHAR INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW[] = {'I','n','s','t','a','l','l','e','d','P','r','o','d','u','c','t','N','a','m','e',0};
|
|
|
|
#define INSTALLPROPERTY_INSTALLEDPRODUCTNAME WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLEDPRODUCTNAME)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_VERSIONSTRINGA "VersionString"
|
|
|
|
static const WCHAR INSTALLPROPERTY_VERSIONSTRINGW[] = {'V','e','r','s','i','o','n','S','t','r','i','n','g',0};
|
|
|
|
#define INSTALLPROPERTY_VERSIONSTRING WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONSTRING)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_HELPLINKA "HelpLink"
|
|
|
|
static const WCHAR INSTALLPROPERTY_HELPLINKW[] = {'H','e','l','p','L','i','n','k',0};
|
|
|
|
#define INSTALLPROPERTY_HELPLINK WINELIB_NAME_AW(INSTALLPROPERTY_HELPLINK)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_HELPTELEPHONEA "HelpTelephone"
|
|
|
|
static const WCHAR INSTALLPROPERTY_HELPTELEPHONEW[] = {'H','e','l','p','T','e','l','e','p','h','o','n','e',0};
|
|
|
|
#define INSTALLPROPERTY_HELPTELEPHONE WINELIB_NAME_AW(INSTALLPROPERTY_HELPTELEPHONE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_INSTALLLOCATIONA "InstallLocation"
|
|
|
|
static const WCHAR INSTALLPROPERTY_INSTALLLOCATIONW[] = {'I','n','s','t','a','l','l','L','o','c','a','t','i','o','n',0};
|
|
|
|
#define INSTALLPROPERTY_INSTALLLOCATION WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLLOCATION)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_INSTALLSOURCEA "InstallSource"
|
|
|
|
static const WCHAR INSTALLPROPERTY_INSTALLSOURCEW[] = {'I','n','s','t','a','l','l','S','o','u','r','c','e',0};
|
|
|
|
#define INSTALLPROPERTY_INSTALLSOURCE WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLSOURCE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_INSTALLDATEA "InstallDate"
|
|
|
|
static const WCHAR INSTALLPROPERTY_INSTALLDATEW[] = {'I','n','s','t','a','l','l','D','a','t','e',0};
|
|
|
|
#define INSTALLPROPERTY_INSTALLDATE WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLDATE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PUBLISHERA "Publisher"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PUBLISHERW[] ={'P','u','b','l','i','s','h','e','r',0};
|
|
|
|
#define INSTALLPROPERTY_PUBLISHER WINELIB_NAME_AW(INSTALLPROPERTY_PUBLISHER)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_LOCALPACKAGEA "LocalPackage"
|
|
|
|
static const WCHAR INSTALLPROPERTY_LOCALPACKAGEW[] = {'L','o','c','a','l','P','a','c','k','a','g','e',0};
|
|
|
|
#define INSTALLPROPERTY_LOCALPACKAGE WINELIB_NAME_AW(INSTALLPROPERTY_LOCALPACKAGE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_URLINFOABOUTA "URLInfoAbout"
|
|
|
|
static const WCHAR INSTALLPROPERTY_URLINFOABOUTW[] = {'U','R','L','I','n','f','o','A','b','o','u','t',0};
|
|
|
|
#define INSTALLPROPERTY_URLINFOABOUT WINELIB_NAME_AW(INSTALLPROPERTY_URLINFOABOUT)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_URLUPDATEINFOA "URLUpdateInfo"
|
|
|
|
static const WCHAR INSTALLPROPERTY_URLUPDATEINFOW[] = {'U','R','L','U','p','d','a','t','e','I','n','f','o',0};
|
|
|
|
#define INSTALLPROPERTY_URLUPDATEINFO WINELIB_NAME_AW(INSTALLPROPERTY_URLUPDATEINFO)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_VERSIONMINORA "VersionMinor"
|
|
|
|
static const WCHAR INSTALLPROPERTY_VERSIONMINORW[] = {'V','e','r','s','i','o','n','M','i','n','o','r',0};
|
|
|
|
#define INSTALLPROPERTY_VERSIONMINOR WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMINOR)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_VERSIONMAJORA "VersionMajor"
|
|
|
|
static const WCHAR INSTALLPROPERTY_VERSIONMAJORW[] = {'V','e','r','s','i','o','n','M','a','j','o','r',0};
|
|
|
|
#define INSTALLPROPERTY_VERSIONMAJOR WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMAJOR)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PRODUCTIDA "ProductID"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PRODUCTIDW[] = {'P','r','o','d','u','c','t','I','D',0};
|
|
|
|
#define INSTALLPROPERTY_PRODUCTID WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTID)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_REGCOMPANYA "RegCompany"
|
|
|
|
static const WCHAR INSTALLPROPERTY_REGCOMPANYW[] = {'R','e','g','C','o','m','p','a','n','y',0};
|
|
|
|
#define INSTALLPROPERTY_REGCOMPANY WINELIB_NAME_AW(INSTALLPROPERTY_REGCOMPANY)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_REGOWNERA "RegOwner"
|
|
|
|
static const WCHAR INSTALLPROPERTY_REGOWNERW[] = {'R','e','g','O','w','n','e','r',0};
|
|
|
|
#define INSTALLPROPERTY_REGOWNER WINELIB_NAME_AW(INSTALLPROPERTY_REGOWNER)
|
|
|
|
|
|
|
|
/* MSI Version 3.0 and greater */
|
|
|
|
#define INSTALLPROPERTY_UNINSTALLABLEA "Uninstallable"
|
|
|
|
static const WCHAR INSTALLPROPERTY_UNINSTALLABLEW[] = {'U','n','i','n','s','t','a','l','l','a','b','l','e',0};
|
|
|
|
#define INSTALLPROPERTY_UNINSTALLABLE WINELIB_NAME_AW(INSTALLPROPERTY_UNINSTALLABLE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PRODUCTSTATEA "State"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PRODUCTSTATEW[] = {'S','t','a','t','e',0};
|
|
|
|
#define INSTALLPROPERTY_PRODUCTSTATE WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTSTATE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PATCHSTATEA "State"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PATCHSTATEW[] ={'S','t','a','t','e',0};
|
|
|
|
#define INSTALLPROPERTY_PATCHSTATE WINELIB_NAME_AW(INSTALLPROPERTY_PATCHSTATE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_PATCHTYPEA "PatchType"
|
|
|
|
static const WCHAR INSTALLPROPERTY_PATCHTYPEW[] = {'P','a','t','c','h','T','y','p','e',0};
|
|
|
|
#define INSTALLPROPERTY_PATCHTYPE WINELIB_NAME_AW(INSTALLPROPERTY_PATCHTYPE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_LUAENABLEDA "LUAEnabled"
|
|
|
|
static const WCHAR INSTALLPROPERTY_LUAENABLEDW[] = {'L','U','A','E','n','a','b','l','e','d',0};
|
|
|
|
#define INSTALLPROPERTY_LUAENABLED WINELIB_NAME_AW(INSTALLPROPERTY_LUAENABLED)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_DISPLAYNAMEA "DisplayName"
|
|
|
|
static const WCHAR INSTALLPROPERTY_DISPLAYNAMEW[] = {'D','i','s','p','l','a','y','N','a','m','e',0};
|
|
|
|
#define INSTALLPROPERTY_DISPLAYNAME WINELIB_NAME_AW(INSTALLPROPERTY_DISPLAYNAME)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_MOREINFOURLA "MoreInfoURL"
|
|
|
|
static const WCHAR INSTALLPROPERTY_MOREINFOURLW[] = {'M','o','r','e','I','n','f','o','U','R','L',0};
|
|
|
|
#define INSTALLPROPERTY_MOREINFOURL WINELIB_NAME_AW(INSTALLPROPERTY_MOREINFOURL)
|
|
|
|
|
|
|
|
/* Source List Info */
|
|
|
|
#define INSTALLPROPERTY_LASTUSEDSOURCEA "LastUsedSource"
|
|
|
|
static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[] = {'L','a','s','t','U','s','e','d','S','o','u','r','c','e',0};
|
2008-04-04 13:44:06 +00:00
|
|
|
#define INSTALLPROPERTY_LASTUSEDSOURCE WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDSOURCE)
|
2005-08-12 17:07:28 +00:00
|
|
|
|
|
|
|
#define INSTALLPROPERTY_LASTUSEDTYPEA "LastUsedType"
|
|
|
|
static const WCHAR INSTALLPROPERTY_LASTUSEDTYPEW[] = {'L','a','s','t','U','s','e','d','T','y','p','e',0};
|
|
|
|
#define INSTALLPROPERTY_LASTUSEDTYPE WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDTYPE)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_MEDIAPACKAGEPATHA "MediaPackagePath"
|
|
|
|
static const WCHAR INSTALLPROPERTY_MEDIAPACKAGEPATHW[] = {'M','e','d','i','a','P','a','c','k','a','g','e','P','a','t','h',0};
|
|
|
|
#define INSTALLPROPERTY_MEDIAPACKAGEPATH WINELIB_NAME_AW(INSTALLPROPERTY_MEDIAPACKAGEPATH)
|
|
|
|
|
|
|
|
#define INSTALLPROPERTY_DISKPROMPTA "DiskPrompt"
|
|
|
|
static const WCHAR INSTALLPROPERTY_DISKPROMPTW[] = {'D','i','s','k','P','r','o','m','p','t',0};
|
|
|
|
#define INSTALLPROPERTY_DISKPROMPT WINELIB_NAME_AW(INSTALLPROPERTY_DISKPROMPT)
|
|
|
|
|
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
|
|
|
typedef INT (CALLBACK *INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR);
|
|
|
|
typedef INT (CALLBACK *INSTALLUI_HANDLERW)(LPVOID, UINT, LPCWSTR);
|
2008-12-27 15:12:15 +00:00
|
|
|
typedef INT (CALLBACK *INSTALLUI_HANDLER_RECORD)(LPVOID, UINT, MSIHANDLE);
|
|
|
|
typedef INSTALLUI_HANDLER_RECORD* PINSTALLUI_HANDLER_RECORD;
|
2004-08-27 22:54:29 +00:00
|
|
|
|
|
|
|
UINT WINAPI MsiAdvertiseProductA(LPCSTR, LPCSTR, LPCSTR, LANGID);
|
|
|
|
UINT WINAPI MsiAdvertiseProductW(LPCWSTR, LPCWSTR, LPCWSTR, LANGID);
|
|
|
|
#define MsiAdvertiseProduct WINELIB_NAME_AW(MsiAdvertiseProduct)
|
|
|
|
|
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
|
|
|
UINT WINAPI MsiAdvertiseProductExA(LPCSTR, LPCSTR, LPCSTR, LANGID, DWORD, DWORD);
|
|
|
|
UINT WINAPI MsiAdvertiseProductExW(LPCWSTR, LPCWSTR, LPCWSTR, LANGID, DWORD, DWORD);
|
|
|
|
#define MsiAdvertiseProductEx WINELIB_NAME_AW(MsiAdvertiseProductEx)
|
|
|
|
|
2004-08-27 22:54:29 +00:00
|
|
|
UINT WINAPI MsiInstallProductA(LPCSTR, LPCSTR);
|
|
|
|
UINT WINAPI MsiInstallProductW(LPCWSTR, LPCWSTR);
|
|
|
|
#define MsiInstallProduct WINELIB_NAME_AW(MsiInstallProduct)
|
|
|
|
|
|
|
|
UINT WINAPI MsiReinstallProductA(LPCSTR, DWORD);
|
|
|
|
UINT WINAPI MsiReinstallProductW(LPCWSTR, DWORD);
|
|
|
|
#define MsiReinstallProduct WINELIB_NAME_AW(MsiReinstallProduct)
|
|
|
|
|
|
|
|
UINT WINAPI MsiApplyPatchA(LPCSTR, LPCSTR, INSTALLTYPE, LPCSTR);
|
|
|
|
UINT WINAPI MsiApplyPatchW(LPCWSTR, LPCWSTR, INSTALLTYPE, LPCWSTR);
|
|
|
|
#define MsiApplyPatch WINELIB_NAME_AW(MsiApplyPatch)
|
|
|
|
|
2008-04-04 13:44:06 +00:00
|
|
|
UINT WINAPI MsiEnumComponentCostsA(MSIHANDLE, LPCSTR, DWORD, INSTALLSTATE, LPSTR, LPDWORD, LPINT, LPINT);
|
|
|
|
UINT WINAPI MsiEnumComponentCostsW(MSIHANDLE, LPCWSTR, DWORD, INSTALLSTATE, LPWSTR, LPDWORD, LPINT, LPINT);
|
|
|
|
#define MsiEnumComponentCosts WINELIB_NAME_AW(MsiEnumComponentCosts)
|
|
|
|
|
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
|
|
|
UINT WINAPI MsiEnumProductsA(DWORD, LPSTR);
|
|
|
|
UINT WINAPI MsiEnumProductsW(DWORD, LPWSTR);
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MsiEnumProducts WINELIB_NAME_AW(MsiEnumProducts)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiEnumProductsExA(LPCSTR, LPCSTR, DWORD, DWORD, CHAR[39], MSIINSTALLCONTEXT*, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiEnumProductsExW(LPCWSTR, LPCWSTR, DWORD, DWORD, WCHAR[39], MSIINSTALLCONTEXT*, LPWSTR, LPDWORD);
|
|
|
|
#define MsiEnumProductsEx WINELIB_NAME_AW(MsiEnumProductsEx)
|
|
|
|
|
2004-08-27 22:54:29 +00:00
|
|
|
UINT WINAPI MsiEnumFeaturesA(LPCSTR, DWORD, LPSTR, LPSTR);
|
|
|
|
UINT WINAPI MsiEnumFeaturesW(LPCWSTR, DWORD, LPWSTR, LPWSTR);
|
|
|
|
#define MsiEnumFeatures WINELIB_NAME_AW(MsiEnumFeatures)
|
|
|
|
|
|
|
|
UINT WINAPI MsiEnumComponentsA(DWORD, LPSTR);
|
|
|
|
UINT WINAPI MsiEnumComponentsW(DWORD, LPWSTR);
|
|
|
|
#define MsiEnumComponents WINELIB_NAME_AW(MsiEnumComponents)
|
|
|
|
|
|
|
|
UINT WINAPI MsiEnumClientsA(LPCSTR, DWORD, LPSTR);
|
|
|
|
UINT WINAPI MsiEnumClientsW(LPCWSTR, DWORD, LPWSTR);
|
|
|
|
#define MsiEnumClients WINELIB_NAME_AW(MsiEnumClients)
|
|
|
|
|
|
|
|
UINT WINAPI MsiOpenPackageA(LPCSTR, MSIHANDLE*);
|
|
|
|
UINT WINAPI MsiOpenPackageW(LPCWSTR, MSIHANDLE*);
|
|
|
|
#define MsiOpenPackage WINELIB_NAME_AW(MsiOpenPackage)
|
|
|
|
|
|
|
|
UINT WINAPI MsiOpenPackageExA(LPCSTR, DWORD, MSIHANDLE*);
|
|
|
|
UINT WINAPI MsiOpenPackageExW(LPCWSTR, DWORD, MSIHANDLE*);
|
|
|
|
#define MsiOpenPackageEx WINELIB_NAME_AW(MsiOpenPackageEx)
|
|
|
|
|
|
|
|
UINT WINAPI MsiOpenProductA(LPCSTR, MSIHANDLE*);
|
|
|
|
UINT WINAPI MsiOpenProductW(LPCWSTR, MSIHANDLE*);
|
|
|
|
#define MsiOpenProduct WINELIB_NAME_AW(MsiOpenProduct)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiGetProductPropertyA(MSIHANDLE,LPCSTR,LPSTR,LPDWORD);
|
|
|
|
UINT WINAPI MsiGetProductPropertyW(MSIHANDLE,LPCWSTR,LPWSTR,LPDWORD);
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MsiGetProductProperty WINELIB_NAME_AW(MsiGetProductProperty)
|
|
|
|
|
|
|
|
UINT WINAPI MsiVerifyPackageA(LPCSTR);
|
|
|
|
UINT WINAPI MsiVerifyPackageW(LPCWSTR);
|
|
|
|
#define MsiVerifyPackage WINELIB_NAME_AW(MsiVerifyPackage)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiQueryComponentStateA(LPCSTR,LPCSTR,MSIINSTALLCONTEXT,LPCSTR,INSTALLSTATE*);
|
|
|
|
UINT WINAPI MsiQueryComponentStateW(LPCWSTR,LPCWSTR,MSIINSTALLCONTEXT,LPCWSTR,INSTALLSTATE*);
|
|
|
|
#define MsiQueryComponentState WINELIB_NAME_AW(MsiQueryComponentState)
|
|
|
|
|
2004-08-27 22:54:29 +00:00
|
|
|
INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR);
|
|
|
|
INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR);
|
|
|
|
#define MsiQueryProductState WINELIB_NAME_AW(MsiQueryProductState)
|
|
|
|
|
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
|
|
|
UINT WINAPI MsiConfigureProductA(LPCSTR, int, INSTALLSTATE);
|
|
|
|
UINT WINAPI MsiConfigureProductW(LPCWSTR, int, INSTALLSTATE);
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MsiConfigureProduct WINELIB_NAME_AW(MsiConfigureProduct);
|
|
|
|
|
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
|
|
|
UINT WINAPI MsiConfigureProductExA(LPCSTR, int, INSTALLSTATE, LPCSTR);
|
|
|
|
UINT WINAPI MsiConfigureProductExW(LPCWSTR, int, INSTALLSTATE, LPCWSTR);
|
|
|
|
#define MsiConfigureProductEx WINELIB_NAME_AW(MsiConfigureProductEx);
|
|
|
|
|
Sync to Wine-0_9_1:
Ivan Leo Puoti <ivanleo@gmail.com>
- Fix some wrong prototypes.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- Passing NULL as the last two parameters to ReadFile is illegal and
actually causes a crash on windows. The attached patch fixes this.
Aric Stewart <aric@codeweavers.com>
- Force files to install if the REINSTALL property is set.
Mike McCormack <mike@codeweavers.com>
- Some installers don't call the CreateFolders action before the
InstallFiles action as MSDN specifies, but it still seems to work, so
make sure that we create component directories in the InstallFiles
action anyway.
- Create component folders in the CreateFolders action.
- If an action fails, print out its name as well as the error code. Use
%d for error codes so it's easy to match them up to something in
winerror.h.
- Rename load_dynamic_stringW to msi_dup_record_field to better describe
what it does, and replace a few instances with MSI_RecordGetString to
avoid allocating memory.
- Tidy up the RegisterProduct action a little.
- Create a stub function to apply a single table transform and call it
where we need to apply transforms.
- Enumerate the substorage transforms for any patches that are passed on
the command line with PATCH=. Need to implement
table_apply_transform() before this will do anything interesting.
- Simplify register_progid() and remove a fixed length buffer.
- Make enter and escape trigger the default and cancel buttons in
dialogs.
- Switch back to using IPicture to load images. LoadImage did the
resizing for us, but doesn't handle jpeg files and requires us writing
a temp file, whereas IPicture handles jpeg files and can load directly
from a stream.
- Remove unused package parameter of register_progid_base().
- Remove an incorrect comment and check for 0 being an invalid file
handle.
- Add missing semicolons that caused compile trouble on FreeBSD.
- Extract file directly to their target location, bypassing the need to
use temporary files and move files.
- Put the UI update code for cabinet file into a separate function.
- Translate INVALID_HANDLE_VALUE to zero for cabinet handles.
- Fix a memory leak in the cabinet extracting code.
- Fix passing of NULL pointers to MsiDecomposeDescriptor and add a
test.
- Fix parameter handling in MsiSetTargetPath, and add a test for it.
- Deleted two buggy functions that incorrectly and inefficiently check
whether a row already exists in a table, and replaced them with a call
to an existing working function that does the same thing correctly.
- Fix and test MsiGetProperty and MsiSetProperty.
- Add a stub implementation of msi.MsiSetMode.
- NULL and empty strings are the same in conditions.
- Add a bunch of tests for MsiEvaluateCondition and make them pass.
- Fix error handling in MsiEvaluateCondition.
- Create the +msidb debug channel for msi database code.
- Implement transforms. This still includes some debugging code which
can be enabled by setting debug_transform to 1 in the relevant
places.
- Define NONAMELESSUNION and NONAMELESSSTRUCT for older compilers.
- Remove some redundant null pointer checks.
- Make sure to unregister all the classes that were registered when msi
is unloaded, so we can register again cleanly.
- Fix a memory leak.
- Implement the RemoveFiles action.
- Add a read-only implementation of the SelectionTree control.
- Make sure we only CoUninitialize after successfully initializing.
Fix the address of the returned IShellLinkDataList interface.
- Use an enumeration for file states.
- Handle MaskEdit masks containing dashes and other constant
characters.
- Stub implementation for MsiAdvertiseScriptA/W.
- Add a stub for the AllocateRegistrySpace action.
- Explicitly check for MSICONDITION_TRUE being returned from
MsiEvaluateCondition.
- Stub implementation for MsiGetFileHashA/W.
- Define MSIDBOPEN_ constants using LPCWSTR when compiling Wine.
- Improve MsiUseFeatureEx and MsiGetFeatureState a little, add some
simple test cases.
- Use msi_get_property_int() in a few more places.
- Implement MsiGetFeatureUsageA and MsiUseFeature(Ex)A using their W
versions.
- Use "static const" rather than "const static" as gcc -W complains
about the former.
- Add an implementation for MsiGetShortcutTargetA/W.
- Don't change the UI level during ExecuteAction.
- Return an error in MsiGetComponentPathW if passed a null component.
- Remove the unused 1st parameter of ACTION_VerifyComponentForAction.
- Fix MsiGetPropertyA/W spec declarations.
- Create an internal handle-free api for reading MSI database summary
information.
svn path=/trunk/; revision=19307
2005-11-17 20:49:37 +00:00
|
|
|
UINT WINAPI MsiConfigureFeatureA(LPCSTR, LPCSTR, INSTALLSTATE);
|
|
|
|
UINT WINAPI MsiConfigureFeatureW(LPCWSTR, LPCWSTR, INSTALLSTATE);
|
|
|
|
#define MsiConfigureFeature WINELIB_NAME_AW(MsiConfigureFeature);
|
|
|
|
|
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
|
|
|
UINT WINAPI MsiGetProductCodeA(LPCSTR, LPSTR);
|
|
|
|
UINT WINAPI MsiGetProductCodeW(LPCWSTR, LPWSTR);
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MsiGetProductCode WINELIB_NAME_AW(MsiGetProductCode)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiGetProductInfoA(LPCSTR, LPCSTR, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiGetProductInfoW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD);
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MsiGetProductInfo WINELIB_NAME_AW(MsiGetProductInfo)
|
|
|
|
|
2008-04-04 13:44:06 +00:00
|
|
|
UINT WINAPI MsiGetProductInfoExA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPCSTR, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiGetProductInfoExW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, LPCWSTR, LPWSTR, LPDWORD);
|
|
|
|
#define MsiGetProductInfoEx WINELIB_NAME_AW(MsiGetProductInfoEx)
|
|
|
|
|
2008-12-27 15:12:15 +00:00
|
|
|
UINT WINAPI MsiGetPatchInfoExA(LPCSTR, LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPCSTR, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiGetPatchInfoExW(LPCWSTR, LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, LPCWSTR, LPWSTR, LPDWORD);
|
|
|
|
#define MsiGetPatchInfoEx WINELIB_NAME_AW(MsiGetPatchInfoEx)
|
|
|
|
|
2010-03-01 12:01:30 +00:00
|
|
|
UINT WINAPI MsiGetPatchInfoA(LPCSTR, LPCSTR, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiGetPatchInfoW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD);
|
|
|
|
#define MsiGetPatchInfo WINELIB_NAME_AW(MsiGetPatchInfo)
|
|
|
|
|
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
|
|
|
UINT WINAPI MsiEnableLogA(DWORD, LPCSTR, DWORD);
|
|
|
|
UINT WINAPI MsiEnableLogW(DWORD, LPCWSTR, DWORD);
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MsiEnableLog WINELIB_NAME_AW(MsiEnableLog)
|
|
|
|
|
|
|
|
INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA, DWORD, LPVOID);
|
|
|
|
INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW, DWORD, LPVOID);
|
|
|
|
#define MsiSetExternalUI WINELIB_NAME_AW(MsiSetExternalUI)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR, LPCSTR, LPSTR, LPDWORD);
|
|
|
|
INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD);
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MsiGetComponentPath WINELIB_NAME_AW(MsiGetComponentPath)
|
|
|
|
|
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
|
|
|
INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR, LPCSTR);
|
|
|
|
INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR, LPCWSTR);
|
2004-08-27 22:54:29 +00:00
|
|
|
#define MsiQueryFeatureState WINELIB_NAME_AW(MsiQueryFeatureState)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiGetFeatureUsageA(LPCSTR, LPCSTR, LPDWORD, LPWORD);
|
|
|
|
UINT WINAPI MsiGetFeatureUsageW(LPCWSTR, LPCWSTR, LPDWORD, LPWORD);
|
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
|
|
|
#define MsiGetFeatureUsage WINELIB_NAME_AW(MsiGetFeatureUsage)
|
|
|
|
|
|
|
|
UINT WINAPI MsiEnumRelatedProductsA(LPCSTR, DWORD, DWORD, LPSTR);
|
|
|
|
UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR, DWORD, DWORD, LPWSTR);
|
|
|
|
#define MsiEnumRelatedProducts WINELIB_NAME_AW(MsiEnumRelatedProducts)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiProvideAssemblyA(LPCSTR, LPCSTR, DWORD, DWORD, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiProvideAssemblyW(LPCWSTR, LPCWSTR, DWORD, DWORD, LPWSTR, LPDWORD);
|
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
|
|
|
#define MsiProvideAssembly WINELIB_NAME_AW(MsiProvideAssembly)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiEnumComponentQualifiersA(LPCSTR, DWORD, LPSTR, LPDWORD, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiEnumComponentQualifiersW(LPCWSTR, DWORD, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
|
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
|
|
|
#define MsiEnumComponentQualifiers WINELIB_NAME_AW(MsiEnumComponentQualifiers)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiGetFileVersionA(LPCSTR, LPSTR, LPDWORD, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiGetFileVersionW(LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
|
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
|
|
|
#define MsiGetFileVersion WINELIB_NAME_AW(MsiGetFileVersion)
|
|
|
|
|
|
|
|
UINT WINAPI MsiMessageBoxA(HWND, LPCSTR, LPCSTR, UINT, WORD, DWORD);
|
|
|
|
UINT WINAPI MsiMessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT, WORD, DWORD);
|
|
|
|
#define MsiMessageBox WINELIB_NAME_AW(MsiMessageBox)
|
|
|
|
|
2008-01-16 10:16:32 +00:00
|
|
|
UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR, LPCSTR, DWORD, LPCSTR, DWORD, DWORD, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD, DWORD, LPWSTR, LPDWORD);
|
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
|
|
|
#define MsiProvideQualifiedComponentEx WINELIB_NAME_AW(MsiProvideQualifiedComponentEx)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR, LPCSTR, DWORD, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiProvideQualifiedComponentW(LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPDWORD);
|
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
|
|
|
#define MsiProvideQualifiedComponent WINELIB_NAME_AW(MsiProvideQualifiedComponent)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR, LPSTR, LPDWORD, LPSTR, LPDWORD, LPSTR, LPDWORD);
|
|
|
|
USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR, LPWSTR, LPDWORD, LPWSTR, LPDWORD, LPWSTR, LPDWORD);
|
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
|
|
|
#define MsiGetUserInfo WINELIB_NAME_AW(MsiGetUserInfo)
|
|
|
|
|
2005-08-03 22:12:15 +00:00
|
|
|
UINT WINAPI MsiCollectUserInfoA(LPCSTR);
|
|
|
|
UINT WINAPI MsiCollectUserInfoW(LPCWSTR);
|
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
|
|
|
#define MsiCollectUserInfo WINELIB_NAME_AW(MsiCollectUserInfo)
|
|
|
|
|
2005-08-03 22:12:15 +00:00
|
|
|
UINT WINAPI MsiReinstallFeatureA(LPCSTR, LPCSTR, DWORD);
|
|
|
|
UINT WINAPI MsiReinstallFeatureW(LPCWSTR, LPCWSTR, DWORD);
|
|
|
|
#define MsiReinstallFeature WINELIB_NAME_AW(MsiReinstallFeature)
|
|
|
|
|
|
|
|
UINT WINAPI MsiGetShortcutTargetA(LPCSTR, LPSTR, LPSTR, LPSTR);
|
|
|
|
UINT WINAPI MsiGetShortcutTargetW(LPCWSTR, LPWSTR, LPWSTR, LPWSTR);
|
|
|
|
#define MsiGetShortcutTarget WINELIB_NAME_AW(MsiGetShortcutTarget)
|
|
|
|
|
|
|
|
INSTALLSTATE WINAPI MsiUseFeatureW(LPCWSTR, LPCWSTR);
|
|
|
|
INSTALLSTATE WINAPI MsiUseFeatureA(LPCSTR, LPCSTR);
|
|
|
|
#define MsiUseFeature WINELIB_NAME_AW(MsiUseFeature)
|
|
|
|
|
|
|
|
INSTALLSTATE WINAPI MsiUseFeatureExW(LPCWSTR, LPCWSTR, DWORD, DWORD);
|
|
|
|
INSTALLSTATE WINAPI MsiUseFeatureExA(LPCSTR, LPCSTR, DWORD, DWORD);
|
|
|
|
#define MsiUseFeatureEx WINELIB_NAME_AW(MsiUseFeatureEx)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
HRESULT WINAPI MsiGetFileSignatureInformationA(LPCSTR, DWORD, PCCERT_CONTEXT*, LPBYTE, LPDWORD);
|
|
|
|
HRESULT WINAPI MsiGetFileSignatureInformationW(LPCWSTR, DWORD, PCCERT_CONTEXT*, LPBYTE, LPDWORD);
|
2005-08-03 22:12:15 +00:00
|
|
|
#define MsiGetFileSignatureInformation WINELIB_NAME_AW(MsiGetFileSignatureInformation)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR, LPSTR, LPDWORD);
|
|
|
|
INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR, LPWSTR, LPDWORD);
|
2005-08-03 22:12:15 +00:00
|
|
|
#define MsiLocateComponent WINELIB_NAME_AW(MsiLocateComponent)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiSourceListAddSourceA(LPCSTR, LPCSTR, DWORD, LPCSTR);
|
|
|
|
UINT WINAPI MsiSourceListAddSourceW(LPCWSTR, LPCWSTR, DWORD, LPCWSTR);
|
|
|
|
#define MsiSourceListAddSource WINELIB_NAME_AW(MsiSourceListAddSource)
|
|
|
|
|
2008-04-04 13:44:06 +00:00
|
|
|
UINT WINAPI MsiSourceListEnumMediaDisksA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPDWORD,
|
|
|
|
LPSTR, LPDWORD, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPDWORD,
|
|
|
|
LPWSTR, LPDWORD, LPWSTR, LPDWORD);
|
|
|
|
#define MsiSourceListEnumMediaDisks WINELIB_NAME_AW(MsiSourceListEnumMediaDisks)
|
|
|
|
|
|
|
|
UINT WINAPI MsiSourceListEnumSourcesA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPWSTR, LPDWORD);
|
|
|
|
#define MsiSourceListEnumSources WINELIB_NAME_AW(MsiSourceListEnumSources)
|
|
|
|
|
2010-02-06 21:28:28 +00:00
|
|
|
UINT WINAPI MsiSourceListClearSourceA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR);
|
|
|
|
UINT WINAPI MsiSourceListClearSourceW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR);
|
|
|
|
#define MsiSourceListClearSource WINELIB_NAME_AW(MsiSourceListClearSource)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiSourceListClearAllA(LPCSTR, LPCSTR, DWORD);
|
|
|
|
UINT WINAPI MsiSourceListClearAllW(LPCWSTR, LPCWSTR, DWORD);
|
|
|
|
#define MsiSourceListClearAll WINELIB_NAME_AW(MsiSourceListClearAll)
|
|
|
|
|
2005-08-12 17:07:28 +00:00
|
|
|
UINT WINAPI MsiSourceListGetInfoA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiSourceListGetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPWSTR, LPDWORD);
|
|
|
|
#define MsiSourceListGetInfo WINELIB_NAME_AW(MsiSourceListGetInfo)
|
|
|
|
|
|
|
|
UINT WINAPI MsiSourceListSetInfoA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, LPCSTR);
|
|
|
|
UINT WINAPI MsiSourceListSetInfoW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, LPCWSTR);
|
|
|
|
#define MsiSourceListSetInfo WINELIB_NAME_AW(MsiSourceListSetInfo)
|
|
|
|
|
|
|
|
UINT WINAPI MsiSourceListAddSourceExA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, LPCSTR, DWORD);
|
|
|
|
UINT WINAPI MsiSourceListAddSourceExW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, LPCWSTR, DWORD);
|
|
|
|
#define MsiSourceListAddSourceEx WINELIB_NAME_AW(MsiSourceListAddSourceEx)
|
|
|
|
|
|
|
|
UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR, LPCSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPCSTR, LPCSTR);
|
|
|
|
UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR, LPCWSTR, MSIINSTALLCONTEXT, DWORD, DWORD, LPCWSTR, LPCWSTR);
|
|
|
|
#define MsiSourceListAddMediaDisk WINELIB_NAME_AW(MsiSourceListAddMediaDisk)
|
|
|
|
|
2008-01-14 15:18:47 +00:00
|
|
|
UINT WINAPI MsiEnumPatchesA(LPCSTR, DWORD, LPSTR, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiEnumPatchesW(LPCWSTR, DWORD, LPWSTR, LPWSTR, LPDWORD);
|
Sync to Wine-0_9_1:
Ivan Leo Puoti <ivanleo@gmail.com>
- Fix some wrong prototypes.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- Passing NULL as the last two parameters to ReadFile is illegal and
actually causes a crash on windows. The attached patch fixes this.
Aric Stewart <aric@codeweavers.com>
- Force files to install if the REINSTALL property is set.
Mike McCormack <mike@codeweavers.com>
- Some installers don't call the CreateFolders action before the
InstallFiles action as MSDN specifies, but it still seems to work, so
make sure that we create component directories in the InstallFiles
action anyway.
- Create component folders in the CreateFolders action.
- If an action fails, print out its name as well as the error code. Use
%d for error codes so it's easy to match them up to something in
winerror.h.
- Rename load_dynamic_stringW to msi_dup_record_field to better describe
what it does, and replace a few instances with MSI_RecordGetString to
avoid allocating memory.
- Tidy up the RegisterProduct action a little.
- Create a stub function to apply a single table transform and call it
where we need to apply transforms.
- Enumerate the substorage transforms for any patches that are passed on
the command line with PATCH=. Need to implement
table_apply_transform() before this will do anything interesting.
- Simplify register_progid() and remove a fixed length buffer.
- Make enter and escape trigger the default and cancel buttons in
dialogs.
- Switch back to using IPicture to load images. LoadImage did the
resizing for us, but doesn't handle jpeg files and requires us writing
a temp file, whereas IPicture handles jpeg files and can load directly
from a stream.
- Remove unused package parameter of register_progid_base().
- Remove an incorrect comment and check for 0 being an invalid file
handle.
- Add missing semicolons that caused compile trouble on FreeBSD.
- Extract file directly to their target location, bypassing the need to
use temporary files and move files.
- Put the UI update code for cabinet file into a separate function.
- Translate INVALID_HANDLE_VALUE to zero for cabinet handles.
- Fix a memory leak in the cabinet extracting code.
- Fix passing of NULL pointers to MsiDecomposeDescriptor and add a
test.
- Fix parameter handling in MsiSetTargetPath, and add a test for it.
- Deleted two buggy functions that incorrectly and inefficiently check
whether a row already exists in a table, and replaced them with a call
to an existing working function that does the same thing correctly.
- Fix and test MsiGetProperty and MsiSetProperty.
- Add a stub implementation of msi.MsiSetMode.
- NULL and empty strings are the same in conditions.
- Add a bunch of tests for MsiEvaluateCondition and make them pass.
- Fix error handling in MsiEvaluateCondition.
- Create the +msidb debug channel for msi database code.
- Implement transforms. This still includes some debugging code which
can be enabled by setting debug_transform to 1 in the relevant
places.
- Define NONAMELESSUNION and NONAMELESSSTRUCT for older compilers.
- Remove some redundant null pointer checks.
- Make sure to unregister all the classes that were registered when msi
is unloaded, so we can register again cleanly.
- Fix a memory leak.
- Implement the RemoveFiles action.
- Add a read-only implementation of the SelectionTree control.
- Make sure we only CoUninitialize after successfully initializing.
Fix the address of the returned IShellLinkDataList interface.
- Use an enumeration for file states.
- Handle MaskEdit masks containing dashes and other constant
characters.
- Stub implementation for MsiAdvertiseScriptA/W.
- Add a stub for the AllocateRegistrySpace action.
- Explicitly check for MSICONDITION_TRUE being returned from
MsiEvaluateCondition.
- Stub implementation for MsiGetFileHashA/W.
- Define MSIDBOPEN_ constants using LPCWSTR when compiling Wine.
- Improve MsiUseFeatureEx and MsiGetFeatureState a little, add some
simple test cases.
- Use msi_get_property_int() in a few more places.
- Implement MsiGetFeatureUsageA and MsiUseFeature(Ex)A using their W
versions.
- Use "static const" rather than "const static" as gcc -W complains
about the former.
- Add an implementation for MsiGetShortcutTargetA/W.
- Don't change the UI level during ExecuteAction.
- Return an error in MsiGetComponentPathW if passed a null component.
- Remove the unused 1st parameter of ACTION_VerifyComponentForAction.
- Fix MsiGetPropertyA/W spec declarations.
- Create an internal handle-free api for reading MSI database summary
information.
svn path=/trunk/; revision=19307
2005-11-17 20:49:37 +00:00
|
|
|
#define MsiEnumPatches WINELIB_NAME_AW(MsiEnumPatches)
|
|
|
|
|
2008-12-27 15:12:15 +00:00
|
|
|
UINT WINAPI MsiEnumPatchesExA(LPCSTR, LPCSTR, DWORD, DWORD, DWORD, LPSTR, LPSTR,
|
|
|
|
MSIINSTALLCONTEXT*, LPSTR, LPDWORD);
|
|
|
|
UINT WINAPI MsiEnumPatchesExW(LPCWSTR, LPCWSTR, DWORD, DWORD, DWORD, LPWSTR, LPWSTR,
|
|
|
|
MSIINSTALLCONTEXT*, LPWSTR, LPDWORD);
|
|
|
|
#define MsiEnumPatchesEx WINELIB_NAME_AW(MsiEnumPatchesEx)
|
|
|
|
|
Sync to Wine-0_9_1:
Ivan Leo Puoti <ivanleo@gmail.com>
- Fix some wrong prototypes.
Thomas Weidenmueller <wine-patches@reactsoft.com>
- Passing NULL as the last two parameters to ReadFile is illegal and
actually causes a crash on windows. The attached patch fixes this.
Aric Stewart <aric@codeweavers.com>
- Force files to install if the REINSTALL property is set.
Mike McCormack <mike@codeweavers.com>
- Some installers don't call the CreateFolders action before the
InstallFiles action as MSDN specifies, but it still seems to work, so
make sure that we create component directories in the InstallFiles
action anyway.
- Create component folders in the CreateFolders action.
- If an action fails, print out its name as well as the error code. Use
%d for error codes so it's easy to match them up to something in
winerror.h.
- Rename load_dynamic_stringW to msi_dup_record_field to better describe
what it does, and replace a few instances with MSI_RecordGetString to
avoid allocating memory.
- Tidy up the RegisterProduct action a little.
- Create a stub function to apply a single table transform and call it
where we need to apply transforms.
- Enumerate the substorage transforms for any patches that are passed on
the command line with PATCH=. Need to implement
table_apply_transform() before this will do anything interesting.
- Simplify register_progid() and remove a fixed length buffer.
- Make enter and escape trigger the default and cancel buttons in
dialogs.
- Switch back to using IPicture to load images. LoadImage did the
resizing for us, but doesn't handle jpeg files and requires us writing
a temp file, whereas IPicture handles jpeg files and can load directly
from a stream.
- Remove unused package parameter of register_progid_base().
- Remove an incorrect comment and check for 0 being an invalid file
handle.
- Add missing semicolons that caused compile trouble on FreeBSD.
- Extract file directly to their target location, bypassing the need to
use temporary files and move files.
- Put the UI update code for cabinet file into a separate function.
- Translate INVALID_HANDLE_VALUE to zero for cabinet handles.
- Fix a memory leak in the cabinet extracting code.
- Fix passing of NULL pointers to MsiDecomposeDescriptor and add a
test.
- Fix parameter handling in MsiSetTargetPath, and add a test for it.
- Deleted two buggy functions that incorrectly and inefficiently check
whether a row already exists in a table, and replaced them with a call
to an existing working function that does the same thing correctly.
- Fix and test MsiGetProperty and MsiSetProperty.
- Add a stub implementation of msi.MsiSetMode.
- NULL and empty strings are the same in conditions.
- Add a bunch of tests for MsiEvaluateCondition and make them pass.
- Fix error handling in MsiEvaluateCondition.
- Create the +msidb debug channel for msi database code.
- Implement transforms. This still includes some debugging code which
can be enabled by setting debug_transform to 1 in the relevant
places.
- Define NONAMELESSUNION and NONAMELESSSTRUCT for older compilers.
- Remove some redundant null pointer checks.
- Make sure to unregister all the classes that were registered when msi
is unloaded, so we can register again cleanly.
- Fix a memory leak.
- Implement the RemoveFiles action.
- Add a read-only implementation of the SelectionTree control.
- Make sure we only CoUninitialize after successfully initializing.
Fix the address of the returned IShellLinkDataList interface.
- Use an enumeration for file states.
- Handle MaskEdit masks containing dashes and other constant
characters.
- Stub implementation for MsiAdvertiseScriptA/W.
- Add a stub for the AllocateRegistrySpace action.
- Explicitly check for MSICONDITION_TRUE being returned from
MsiEvaluateCondition.
- Stub implementation for MsiGetFileHashA/W.
- Define MSIDBOPEN_ constants using LPCWSTR when compiling Wine.
- Improve MsiUseFeatureEx and MsiGetFeatureState a little, add some
simple test cases.
- Use msi_get_property_int() in a few more places.
- Implement MsiGetFeatureUsageA and MsiUseFeature(Ex)A using their W
versions.
- Use "static const" rather than "const static" as gcc -W complains
about the former.
- Add an implementation for MsiGetShortcutTargetA/W.
- Don't change the UI level during ExecuteAction.
- Return an error in MsiGetComponentPathW if passed a null component.
- Remove the unused 1st parameter of ACTION_VerifyComponentForAction.
- Fix MsiGetPropertyA/W spec declarations.
- Create an internal handle-free api for reading MSI database summary
information.
svn path=/trunk/; revision=19307
2005-11-17 20:49:37 +00:00
|
|
|
UINT WINAPI MsiGetFileHashA(LPCSTR, DWORD, PMSIFILEHASHINFO);
|
|
|
|
UINT WINAPI MsiGetFileHashW(LPCWSTR, DWORD, PMSIFILEHASHINFO);
|
|
|
|
#define MsiGetFileHash WINELIB_NAME_AW(MsiGetFileHash)
|
|
|
|
|
|
|
|
UINT WINAPI MsiAdvertiseScriptA(LPCSTR, DWORD, PHKEY, BOOL);
|
|
|
|
UINT WINAPI MsiAdvertiseScriptW(LPCWSTR, DWORD, PHKEY, BOOL);
|
|
|
|
#define MsiAdvertiseScript WINELIB_NAME_AW(MsiAdvertiseScript)
|
|
|
|
|
2008-04-04 13:44:06 +00:00
|
|
|
UINT WINAPI MsiIsProductElevatedA(LPCSTR, BOOL *);
|
|
|
|
UINT WINAPI MsiIsProductElevatedW(LPCWSTR, BOOL *);
|
|
|
|
#define MsiIsProductElevated WINELIB_NAME_AW(MsiIsProductElevated)
|
|
|
|
|
2008-12-27 15:12:15 +00:00
|
|
|
UINT WINAPI MsiDatabaseMergeA(MSIHANDLE, MSIHANDLE, LPCSTR);
|
|
|
|
UINT WINAPI MsiDatabaseMergeW(MSIHANDLE, MSIHANDLE, LPCWSTR);
|
|
|
|
#define MsiDatabaseMerge WINELIB_NAME_AW(MsiDatabaseMerge)
|
|
|
|
|
|
|
|
UINT WINAPI MsiInstallMissingComponentA(LPCSTR, LPCSTR, INSTALLSTATE);
|
|
|
|
UINT WINAPI MsiInstallMissingComponentW(LPCWSTR, LPCWSTR, INSTALLSTATE);
|
|
|
|
#define MsiInstallMissingComponent WINELIB_NAME_AW(MsiInstallMissingComponent)
|
|
|
|
|
|
|
|
UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR, DWORD, PMSIPATCHSEQUENCEINFOA);
|
|
|
|
UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR, DWORD, PMSIPATCHSEQUENCEINFOW);
|
|
|
|
#define MsiDetermineApplicablePatches WINELIB_NAME_AW(MsiDetermineApplicablePatches)
|
|
|
|
|
2009-05-20 12:59:23 +00:00
|
|
|
UINT WINAPI MsiApplyMultiplePatchesA(LPCSTR, LPCSTR, LPCSTR);
|
|
|
|
UINT WINAPI MsiApplyMultiplePatchesW(LPCWSTR, LPCWSTR, LPCWSTR);
|
|
|
|
#define MsiApplyMultiplePatches WINELIB_NAME_AW(MsiApplyMultiplePatches)
|
|
|
|
|
2010-10-22 13:18:11 +00:00
|
|
|
UINT WINAPI MsiBeginTransactionA(LPCSTR, DWORD, MSIHANDLE *, HANDLE *);
|
|
|
|
UINT WINAPI MsiBeginTransactionW(LPCWSTR, DWORD, MSIHANDLE *, HANDLE *);
|
|
|
|
#define MsiBeginTransaction WINELIB_NAME_AW(MsiBeginTransaction)
|
|
|
|
|
|
|
|
UINT WINAPI MsiEndTransaction(DWORD);
|
|
|
|
|
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
|
|
|
/* Non Unicode */
|
2004-08-27 22:54:29 +00:00
|
|
|
UINT WINAPI MsiCloseHandle(MSIHANDLE);
|
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
|
|
|
UINT WINAPI MsiCloseAllHandles(void);
|
2004-08-27 22:54:29 +00:00
|
|
|
INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL, HWND*);
|
2008-12-27 15:12:15 +00:00
|
|
|
UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD, DWORD, LPVOID, PINSTALLUI_HANDLER_RECORD);
|
2004-08-27 22:54:29 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* __WINE_MSI_H */
|