Zebediah Figura
51ad009bac
msi: Don't assume that WoW64 redirection is enabled in custom_start_server().
...
As of 3a884c2ef
the server is started on the main thread, so this is no
longer a valid assumption. In particular, we disable WoW64 redirection while
running standard actions, including the top-level INSTALL action.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45663
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-08-20 19:39:14 +02:00
Michael Stefaniuc
c2add8a030
msi: Unlock msi_custom_action_c on the error paths.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45483
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
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-08-17 16:51:02 +02:00
Zebediah Figura
6387476d99
msi/tests: Add a test for asynchronous 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-08-16 18:41:18 +02:00
Zebediah Figura
b7f06accb0
msi: Don't refcount the msi_custom_action_info struct.
...
This is unnecessary, and may have always been so. The struct will either be
freed after it completes synchronously, or after it has completed
asynchronously in ACTION_FinishCustomActions().
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-08-16 18:41:11 +02:00
Zebediah Figura
583edf7f59
msi: Protect communication with the custom action server with a critical section.
...
Avoids a potential race whereby an asynchronous custom action receives the
wrong thread handle.
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-08-16 18:41:08 +02:00
Zebediah Figura
3a884c2ef7
msi: Don't start the custom action server inside of custom_client_thread().
...
Asynchronous custom actions don't wait for custom_client_thread() to
terminate, so it's possible for two consecutive actions to both try to start
the server at once, causing failures when the second action e.g. receives
ERROR_PIPE_BUSY from CreateNamedPipe().
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-08-16 18:41:04 +02:00
Michael Stefaniuc
b8027768b8
msi: Avoid an ARRAY_SIZE-like 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-14 10:16:00 +02:00
Zebediah Figura
6925846988
msi: Generate unique names for 32- and 64-bit custom action server pipes.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 10:15:59 +02:00
Zebediah Figura
2a9e0f1fad
msi: Implement deferral for standard and 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-08-14 10:15:59 +02:00
Marcus Meissner
9f1cdb4970
msi: Do not free hPackage twice or uninitialized (Coverity).
...
Signed-off-by: Marcus Meissner <marcus@jet.franken.de>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 09:39:55 +02:00
Hans Leidekker
ddf762a82f
msi: Use msi_get_package_code in msi_publish_product_properties.
...
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 14:13:43 +02:00
Piotr Caban
7837ae20cd
msi: Fix condition evaluation when comparing literal and integer.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45445
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-07-16 09:14:19 +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
7908d6ee39
msi: Create the custom action thread inside msiexec.exe.
...
This patch is effectively a no-op by itself, but makes the next patch
architecturally much simpler. We need the main thread to be non-blocking
to allow nested custom actions to work, so creating the thread inside of
msiexec allows the custom action thread to write the result of the action to
the server pipe while the main thread simply reads from it.
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
Michael Stefaniuc
962b31c80b
include: Add a generic available ARRAY_SIZE().
...
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-04 10:39:15 +02:00
Andrey Gusev
5bd1b6f410
msi: Remove checks for negative value.
...
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 09:27:32 +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
4c5d24ae20
msi: Add ProductToBeRegistered property tests.
...
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:57 +02:00
Piotr Caban
cecff8a353
msi: Add REINSTALLMODE=v installation mode test.
...
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:53 +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
d0451d5734
msi: Mark exported wine functions CDECL.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-19 20:46:50 +02:00
Piotr Caban
bdf8895d76
msi/tests: Add package minor/major upgrade tests.
...
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-15 20:53:17 +02:00
Michael Stefaniuc
b716661c4a
msi/tests: Use the available 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-06-15 20:53:17 +02:00
Michael Stefaniuc
74b0dec3c1
msi/tests: Avoid ARRAY_SIZE-like macros.
...
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-06-13 22:13:27 +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
536a86f21f
msi: Resolve source when executing InstallFiles.
...
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:32 +02:00
Zebediah Figura
38747c3234
msi/tests: Test that some actions cause resolution of SourceDir.
...
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:31 +02:00
Zebediah Figura
ed2861c28c
msi/tests: Test deferral of WriteRegistryValues.
...
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-05 16:07:18 +02:00
Zebediah Figura
3c2b229431
msi/tests: Simplify and clarify WriteRegistryValues and RemoveRegistryValues tests.
...
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-05 15:39:37 +02:00
Zebediah Figura
91e418073f
msi: Only delete empty registry keys in delete_key().
...
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-05 15:39:37 +02:00
Hans Leidekker
f655bb7ee7
msi/tests: Remove duplicate service tests.
...
Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-31 20:00:38 +02:00
Zebediah Figura
377d32c4fb
msi/tests: Test deferral of WriteIniValues and RemoveIniValues.
...
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-31 20:00:38 +02:00
Zebediah Figura
1a78380e6f
msi/tests: Add a simple test for WriteIniValues.
...
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-31 20:00:38 +02:00
Zebediah Figura
aae3d6b5af
msi/tests: Test deferral of WriteEnvironmentStrings and RemoveEnvironmentStrings.
...
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-31 20:00:38 +02:00
Zebediah Figura
2765b47780
msi/tests: Simplify and combine environment variable tests.
...
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-31 20:00:38 +02:00
Zebediah Figura
a08438afbd
msi/tests: Test deferral of SelfRegModules and SelfUnregModules.
...
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-30 22:26:49 +02:00
Zebediah Figura
8867712944
msi/tests: Test self-registration of a valid DLL.
...
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-30 22:26:49 +02:00
Zebediah Figura
d3023ad3f7
msi/tests: Test deferral of RegisterTypeLibraries and UnregisterTypeLibraries.
...
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-30 22:26:49 +02:00
Zebediah Figura
f5da1902aa
msi/tests: Test registration of a valid typelib.
...
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-30 22:26:49 +02:00
Zebediah Figura
d0ab6deb77
msi/tests: Test deferral of RegisterUser.
...
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-29 17:13:05 +02:00
Zebediah Figura
2fe0388d0c
msi/tests: Test deferral of RegisterProgIdInfo and UnregisterProgIdInfo.
...
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-29 17:13:05 +02:00
Zebediah Figura
71f3f2a6ed
msi/tests: Test deferral of RegisterProduct.
...
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-29 17:13:05 +02:00
Zebediah Figura
8d72829a87
msi/tests: Simplify key access flags in test_register_product().
...
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-29 17:13:05 +02:00
Zebediah Figura
f181e71400
msi/tests: Test deferral of RegisterMimeInfo and UnregisterMimeInfo.
...
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-28 10:59:53 +02:00
Zebediah Figura
a364e1a9c8
msi/tests: Test deferral of RegisterFonts and UnregisterFonts.
...
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-28 10:59:50 +02:00
Zebediah Figura
884d146b32
msi/tests: Test deferral of RegisterExtensionInfo and UnregisterExtensionInfo.
...
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-28 10:59:46 +02:00