Commit Graph

129 Commits

Author SHA1 Message Date
Vincent Povirk cce9a5f124 msi: Use integers internally for MSIDBOPEN constants.
This fixes a bug where some verions of mingw and probably gcc
assume that the result of pointer subtraction will be non-NULL,
causing MSI_OpenDatabaseW to break when given the mode
MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE.

Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-05 16:14:41 +01:00
Alexandre Julliard 7cd3c9f073 msi: Build with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-13 14:34:51 +02:00
Zebediah Figura 19420f5f7c msi: Return ERROR_INVALID_HANDLE when MsiDatabaseImport() is called from a custom action.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:46:14 +01:00
Zebediah Figura 3ff7d30520 msi: Return ERROR_INVALID_HANDLE when MsiDatabaseExport() is called from a custom action.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:46:12 +01:00
Zebediah Figura 60b1fd7e87 msi: Return MSIDBSTATE_ERROR when MsiGetDatabaseState() is called from a custom action.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46812
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:46:07 +01:00
Erich E. Hoover f1d8218169 msi: Add support for exporting binary streams (Binary/Icon tables).
The Binary and Icon tables store their data in a different format from
other tables, one column of the data is stored as a "stream" instead
of a normal text field.  With this patch those tables can now be
exported properly by the MSI export functionality.

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-15 20:01:57 +01:00
Erich E. Hoover b08d999863 msi: Break out field exporting into a separate routine.
msi_export_record is a lot more complicated than necessary, this patch
splits out the field export part of that functionality as
msi_export_field.  This also needs to be separate for exporting binary
stream data (next patch).

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-15 20:01:48 +01:00
Erich E. Hoover 79fd42fc1a msi: Add support for exporting the _SummaryInformation table.
The _SummaryInformation table stores a lot of important information
about an MSI database.  This patch adds the ability to export that
table since, like _ForceCodepage, it is stored in a different format
than the other tables.

Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-15 20:01:42 +01:00
Alex Henrie 6a833ce0b3 msi: Turn several variables and constants into static constants.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-30 19:36:51 +01:00
Michael Stefaniuc a9cb67bb7f msi: Use the ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 10:22:10 +02:00
Zebediah Figura 85d1fb62b3 msi: Execute custom actions in a separate process.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-26 13:27:10 +02:00
Zebediah Figura bf5589311d msi: Make MsiGetSummaryInformation() RPC-compatible.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-20 14:07:08 +02:00
Zebediah Figura ed0a8dd3bf msi: Make MsiDatabaseGetPrimaryKeys() RPC-compatible.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-20 14:07:04 +02:00
Zebediah Figura c6bd4d8c35 msi: Make MsiDatabaseOpenView() RPC-compatible.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-19 12:51:21 +02:00
Zebediah Figura 252dd11f20 msi: Make MsiDatabaseIsTablePersistent() RPC-compatible.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-19 12:51:21 +02:00
Zebediah Figura 8bfb4e8b62 msi: Convert the IWineMsiRemote* remote interfaces to RPC stubs.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-16 11:48:17 +02:00
Zebediah Figura b4c39f4e7c msi: Avoid a null pointer dereference.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-21 14:52:57 +02:00
Carlo Bramini b568992383 msi: Remove useless code.
Signed-off-by: Carlo Bramini <carlo_bramini@users.sourceforge.net>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-24 11:01:32 +02:00
Hans Leidekker 17b05316a5 msi: Clean up handling of temporary files. 2015-04-01 22:34:20 +09:00
Nikolay Sivov 2478421d87 msi: Return interface pointer instead of impl pointer. 2015-03-24 18:16:37 +09:00
Francois Gouget 232d1b6e3f msi: Remove unneeded NONAMELESSXXX directives. 2015-03-16 15:04:21 +09:00
Michael Stefaniuc be813aed6f msi: Remove comparison of pointer with >= NULL (PVS-Studio). 2015-03-09 22:07:08 +09:00
Hans Leidekker 0dba391d67 msi: Don't write streams to storage until the database is committed.
Native allows streams to be created with names that exceed the maximum
length allowed by OLE storages. These streams can be used normally, it's
just not possible to commit such a database.
2015-02-13 21:48:21 +09:00
Hans Leidekker d954fbf8da msi: Get rid of the open streams cache. 2015-02-13 21:48:07 +09:00
Hans Leidekker f41ac94e0e msi: Include the terminating null in the buffer size for decoded stream names. 2014-10-02 16:59:04 +02:00
Nikolay Sivov 58bbe5ac4c msi: Free records on error paths (Coverity). 2013-04-01 12:32:37 +02:00
Hans Leidekker 6a588baaf7 msi: Use inline wrappers for calling COM methods. 2012-07-27 17:05:32 +02:00
Andrew Talbot 895b48e9ed msi: Mark fall-throughs in switch statements. 2011-10-06 16:47:33 -05:00
Hans Leidekker 0f67869d84 msi: Print a warning instead of a fixme if we fail to open the database. 2011-08-23 16:53:56 +02:00
Hans Leidekker e1c2e8828f msi: Clean up the database queries. 2011-07-27 11:55:16 +02:00
Hans Leidekker b5ea0030f0 msi: Allow read sharing if the package is openend in transacted mode. 2011-07-25 17:59:04 +02:00
Hans Leidekker 9299319b88 msi: Remove some dead assignments (clang). 2011-07-07 14:45:59 +02:00
Frédéric Delanoy 99e422c975 msi: Remove dead assignment (Clang). 2011-07-06 11:30:10 +02:00
Hans Leidekker 7d677fc327 msi: Delay creating local installer and patch packages until the product is registered. 2011-07-01 14:39:36 +02:00
Hans Leidekker c7e36d8ba8 msi: Unescape ^Q^Y sequences in text archives. 2011-05-12 18:23:00 +02:00
Hans Leidekker e2ba5dce06 msi: Handle embedded nulls in text archives. 2011-05-12 18:22:54 +02:00
Hans Leidekker 4f9971f5f8 msi: Keep track of a stream's storage. 2011-05-06 16:40:06 +02:00
Hans Leidekker eee070f1e0 msi: Add offsets to disk ids added by patches. 2011-04-14 17:37:23 +02:00
David Hedberg fed6e5211c msi: Add an offset to sequence numbers belonging to files added by a patch. 2011-03-29 12:21:49 +02:00
Michael Stefaniuc 24ad5cb68f msi: Use an iface instead of a vtbl pointer in msi_remote_database_impl. 2010-12-15 13:18:45 +01:00
Hans Leidekker c3adb72820 msi: Add support for importing and exporting the special _ForceCodepage table. 2010-11-17 14:01:13 +01:00
Hans Leidekker eaa57c5b7b msi: Compare strings without depending on thread locale. 2010-10-19 13:49:54 +02:00
Hans Leidekker 3ef3e81f9e msi: Avoid a crash on database destruction. 2010-09-18 13:06:21 +02:00
Hans Leidekker dd7514a38d msi: Move database initialization to a separate function. 2010-08-27 12:08:33 +02:00
Hans Leidekker eef54ffe6b msi: Open the database storage in transacted mode when MSIDBOPEN_CREATE or MSIDBOPEN_TRANSACT is specified. 2010-08-27 12:08:29 +02:00
Hans Leidekker d10208e863 msi: Improve traces in db_get_raw_stream. 2010-07-21 13:24:00 +02:00
Hans Leidekker fba248642b msi: Reverse the transform storage list order.
This ensures that we use the most recently added stream if another
transform storage contains a stream by the same name. Fixes
wordconv.msp, an update for Word 2007.
2010-07-21 13:24:00 +02:00
Hans Leidekker d8504e0550 msi: Handle MSIDBOPEN_PATCHFILE properly in MsiOpenDatabase. 2010-04-19 14:57:49 +02:00
Hans Leidekker faf750f2f7 msi: Remove stream from streams cache before destroying it. 2010-03-23 13:24:27 +01:00
Hans Leidekker 706c4f77e8 msi: Implement a second cabinet extractor on top of IStream and use it to extract embedded cabinets.
Currently a cabinet stream is read into memory and then written to a file,
which is then extracted like an external cabinet file. This uses more time
and disk space than necessary and fails if the cabinet is too large to fit
into memory.
2010-03-23 13:24:26 +01:00