Commit Graph

350 Commits

Author SHA1 Message Date
Zebediah Figura baea371c3d msi: Add exception handling around all custom action RPC calls.
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-09-10 12:30:01 +02: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 457431ab5b msi: Reuse the custom action server process where possible.
We use a named pipe to communicate between the client (i.e. the process that
called MsiInstallProduct() and the custom action server. The naïve approach
has the client send custom action GUIDs to the server and the server send
back the results of executing the action, but this fails in the case of
nested custom actions, so instead we send back handles of threads for the
client to wait on.

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-07-11 15:45:11 +02:00
Zebediah Figura 6135b38d7d msi: Avoid connecting to the RPC server more than once.
This is a no-op as is, but is necessary as of the next patch in the case of
nested custom actions.

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-07-11 15:45:11 +02:00
Zebediah Figura 5c7cf0a47d msi: Avoid starting the RPC server more than once for a given package.
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-07-11 15:45:11 +02:00
Piotr Caban 5924321ad6 msi: Add support for re-caching package.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-22 11:31:17 +02:00
Piotr Caban 0657d966ff msi: Report error when cached installer has different version.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-22 11:24:58 +02:00
Piotr Caban 21836b79dd msi: Re-publish product if previous installation with different package is detected.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-19 20:50:47 +02:00
Piotr Caban 6dc49e4b68 msi: Add support for ProductToBeRegistered property.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-19 20:50:40 +02:00
Zebediah Figura 756bbb5bb7 msi: Store the current script in the package.
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-06-06 11:18:34 +02:00
Zebediah Figura 2e2934e455 msi: Avoid leaking memory on failure paths in MsiGetPropertyA().
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-05-18 01:44:24 +02:00
Zebediah Figura 389ad808d2 msi: Avoid using awstring in MsiGetPropertyA/W().
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-05-16 10:16:52 +02:00
Zebediah Figura 84d972010f msi: Handle the remote case directly in MsiGetPropertyA().
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-05-16 10:16:49 +02:00
Zebediah Figura a6e9622439 msi: Set the correct values for ProgramFiles64Folder and CommonFiles64Folder.
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-05-02 16:00:08 +02:00
Zebediah Figura e355cb6277 msi: Don't load a custom action DLL in the main process.
This has no effect anymore, and won't work if the architecture doesn't match.

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-05-01 13:12:26 +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 efb8ed4748 msi: Make MsiEnumComponentCosts 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-26 13:27:03 +02:00
Zebediah Figura e500af2b67 msi: Make MsiGetFeatureCost() 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-25 10:53:19 +02:00
Zebediah Figura 0fc1b6f2f3 msi: Make MsiEvaluateCondition() 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-25 10:53:15 +02:00
Zebediah Figura ef7ed29348 msi: Make MsiFormatRecord() 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-25 10:53:13 +02:00
Zebediah Figura 5ab576b8a0 msi: Make MsiSetInstallLevel() 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-25 10:53:11 +02:00
Zebediah Figura 5f45959adc msi: Make MsiGetLanguage() 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-25 10:53:09 +02:00
Zebediah Figura 11702a31d2 msi: Make MsiSetComponentState() 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-24 12:00:37 +02:00
Zebediah Figura 35b1b87dc9 msi: Make MsiGetComponentState() 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-24 12:00:35 +02:00
Zebediah Figura 863680d5ed msi: Make MsiSetFeatureState() 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-24 12:00:33 +02:00
Zebediah Figura 9f428f592d msi: Make MsiGetFeatureState() 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-24 12:00:31 +02:00
Zebediah Figura 1723536058 msi: Make MsiSetMode() 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-24 12:00:29 +02:00
Zebediah Figura 9091c3dcf2 msi: Make MsiGetMode() 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-24 12:00:26 +02:00
Zebediah Figura d2b0981a2c msi: Make MsiGetSourcePath() 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-23 12:02:37 +02:00
Zebediah Figura e5fba6d23e msi: Make MsiSetTargetPath() 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-23 12:02:35 +02:00
Zebediah Figura 49d67080c9 msi: Make MsiGetTargetPath() 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-23 12:02:33 +02:00
Zebediah Figura 676376d1d3 msi: Make MsiSequence() 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-23 12:02:31 +02:00
Zebediah Figura c49abc8ce0 msi: Make MsiDoAction() 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-23 12:02:29 +02:00
Zebediah Figura a6934768d1 msi: Make MsiGetActiveDatabase() 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
Hans Leidekker 99aa0eb5d8 msi: Don't cache the base URL.
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-18 10:14:33 +02:00
Zebediah Figura bbf0f2da82 msi: Make MsiProcessMessage() RPC-compatible.
Instead of passing a remote MSIHANDLE and creating a set of remote_Record*()
methods, we marshal the whole record as a wire struct. We do this for two
reasons: firstly, because chances are whoever is reading the record is going
to want to read the whole thing, so it's much less taxing on IPC to just pass
the whole record once; and secondly, because records can be created on the
client side or returned from the server side, and we don't want to have to
write a lot of extra code to deal with both possibilities.

The wire_record struct is designed so that we can simply pass the relevant
part of an MSIRECORD to the server.

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-18 10:12:58 +02:00
Zebediah Figura a73182ca54 msi: Make MsiSetProperty() 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-17 20:57:41 +02:00
Zebediah Figura 2192c9a50a msi: Make MsiGetProperty() 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-17 20:57:40 +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 b9b459810f msi: Allocate the remote handle on the server side.
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:46:28 +02:00
Hans Leidekker 691a7fa9fa msi: Properly set the MsiNetAssemblySupport property.
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-06 14:28:11 +01:00
Hans Leidekker f25501db4b Revert "msi: Store the current script in the package."
Commit 036f007e24 (which reverts
86bc556f9f) is not sufficient to
fix the Office installers because MsiGetMode(MSIRUNMODE_SCHEDULED)
no longer does the right thing after the revert.

That is caused by "msi: Store the current script in the package.",
which, in hindsight, should have been part of the first commit.

This reverts e1e668d41f.

Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-04 15:13:33 +01:00
Pierre Schweitzer a6ad46dc94 msi: Don't leak memory on failure.
Signed-off-by: Pierre Schweitzer <pierre@reactos.org>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-10-23 10:49:58 +02:00
Hans Leidekker fdac39f697 msi: Pass correct length to GetDateFormatW.
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-09-19 20:01:42 +02:00
Zebediah Figura e1e668d41f msi: Store the current script in the package.
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-09-19 20:01:39 +02:00
Zebediah Figura 5245b9d3a8 msi: Remove a superfluous substructure.
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-09-19 20:01:35 +02:00
Zebediah Figura 5c39852c1e msi: More fully implement the ExecuteAction action.
Major changes are adding several new UI messages (many of obscure
purpose), and executing the action given in the EXECUTEACTION
property rather than always running the InstallExecuteSequence table.

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-09-14 10:44:38 +02:00
Zebediah Figura d17fda090d msi: Simplify message type processing.
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-09-13 11:49:19 +02:00
Zebediah Figura 700ebc86a9 msi: Return the correct values from dialogs.
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-08-08 20:57:51 +09:00
Zebediah Figura a3dd99c9a3 msi: Return the current date and time.
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-08-08 20:57:49 +09:00