Skip to content

Commit

Permalink
Fix up missing 'Wix4' prefixes on MSMQ Permission tables.
Browse files Browse the repository at this point in the history
And updated decompiler to Wix4 table names etc in line with firewall CA.

Fixes wixtoolset/issues#8902

Signed-off-by: Bevan Weiss <bevan.weiss@gmail.com>
  • Loading branch information
bevanweiss committed Jan 18, 2025
1 parent 523c66a commit 7bfb29f
Show file tree
Hide file tree
Showing 6 changed files with 236 additions and 110 deletions.
10 changes: 5 additions & 5 deletions src/ext/Msmq/ca/mqqueuesched.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ LPCWSTR vcsMessageQueueQuery =
enum eMessageQueueQuery { mqqMessageQueue = 1, mqqComponent, mqqBasePriority, mqqJournalQuota, mqqLabel, mqqMulticastAddress, mqqPathName, mqqPrivLevel, mqqQuota, mqqServiceTypeGuid, mqqAttributes };

LPCWSTR vcsMessageQueueUserPermissionQuery =
L"SELECT `MessageQueueUserPermission`, `MessageQueue_`, `MessageQueueUserPermission`.`Component_`, `Domain`, `Name`, `Permissions` FROM `Wix4MessageQueueUserPermission`, `Wix4User` WHERE `User_` = `User`";
L"SELECT `MessageQueueUserPermission`, `MessageQueue_`, `Wix4MessageQueueUserPermission`.`Component_`, `Domain`, `Name`, `Permissions` FROM `Wix4MessageQueueUserPermission`, `Wix4User` WHERE `User_` = `User`";
LPCWSTR vcsMessageQueueGroupPermissionQuery =
L"SELECT `MessageQueueGroupPermission`, `MessageQueue_`, `MessageQueueGroupPermission`.`Component_`, `Domain`, `Name`, `Permissions` FROM `Wix4MessageQueueGroupPermission`, `Wix4Group` WHERE `Group_` = `Group`";
L"SELECT `MessageQueueGroupPermission`, `MessageQueue_`, `Wix4MessageQueueGroupPermission`.`Component_`, `Domain`, `Name`, `Permissions` FROM `Wix4MessageQueueGroupPermission`, `Wix4Group` WHERE `Group_` = `Group`";
enum eMessageQueuePermissionQuery { mqpqMessageQueuePermission = 1, mqpqMessageQueue, mqpqComponent, mqpqDomain, mqpqName, mqpqPermissions };


Expand Down Expand Up @@ -94,7 +94,7 @@ HRESULT MqiMessageQueueRead(

// loop through all partitions
hr = WcaOpenExecuteView(vcsMessageQueueQuery, &hView);
ExitOnFailure(hr, "Failed to execute view on MessageQueue table");
ExitOnFailure(hr, "Failed to execute view on Wix4MessageQueue table");

while (S_OK == (hr = WcaFetchRecord(hView, &hRec)))
{
Expand Down Expand Up @@ -324,14 +324,14 @@ HRESULT MqiMessageQueuePermissionRead(
HRESULT hr = S_OK;

// read message queue user permissions
if (S_OK == WcaTableExists(L"MessageQueueUserPermission"))
if (S_OK == WcaTableExists(L"Wix4MessageQueueUserPermission"))
{
hr = MessageQueueTrusteePermissionsRead(vcsMessageQueueUserPermissionQuery, pMessageQueueList, pList);
ExitOnFailure(hr, "Failed to read message queue user permissions");
}

// read message queue group permissions
if (S_OK == WcaTableExists(L"MessageQueueGroupPermission"))
if (S_OK == WcaTableExists(L"Wix4MessageQueueGroupPermission"))
{
hr = MessageQueueTrusteePermissionsRead(vcsMessageQueueGroupPermissionQuery, pMessageQueueList, pList);
ExitOnFailure(hr, "Failed to read message queue group permissions");
Expand Down
6 changes: 3 additions & 3 deletions src/ext/Msmq/ca/mqsched.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ extern "C" UINT __stdcall MessageQueuingInstall(MSIHANDLE hInstall)

// read message queues
hr = MqiMessageQueueRead(&lstMessageQueues);
ExitOnFailure(hr, "Failed to read MessageQueue table");
ExitOnFailure(hr, "Failed to read Wix4MessageQueue table");

// read message queue permissions
hr = MqiMessageQueuePermissionRead(&lstMessageQueues, &lstMessageQueuePermissions);
Expand Down Expand Up @@ -78,7 +78,7 @@ extern "C" UINT __stdcall MessageQueuingInstall(MSIHANDLE hInstall)

hr = MqiMessageQueuePermissionInstall(&lstMessageQueuePermissions, &pwzExecuteActionData);
ExitOnFailure(hr, "Failed to add message queue permissions to execute action data");
iCost += lstMessageQueues.iInstallCount * COST_MESSAGE_QUEUE_PERMISSION_ADD;
iCost += lstMessageQueuePermissions.iInstallCount * COST_MESSAGE_QUEUE_PERMISSION_ADD;

hr = WcaDoDeferredAction(CUSTOM_ACTION_DECORATION(L"MessageQueuingExecuteInstall"), pwzExecuteActionData, iCost);
ExitOnFailure(hr, "Failed to schedule MessageQueuingExecuteInstall");
Expand Down Expand Up @@ -148,7 +148,7 @@ extern "C" UINT __stdcall MessageQueuingUninstall(MSIHANDLE hInstall)

// read message queues
hr = MqiMessageQueueRead(&lstMessageQueues);
ExitOnFailure(hr, "Failed to read MessageQueue table");
ExitOnFailure(hr, "Failed to read Wix4MessageQueue table");

// read message queue permissions
hr = MqiMessageQueuePermissionRead(&lstMessageQueues, &lstMessageQueuePermissions);
Expand Down
9 changes: 7 additions & 2 deletions src/ext/Msmq/test/WixToolsetTest.Msmq/MsmqExtensionFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ namespace WixToolsetTest.Msmq
using WixInternal.TestSupport;
using WixInternal.Core.TestPackage;
using WixToolset.Msmq;
using WixToolset.Util;
using Xunit;

public class MsmqExtensionFixture
Expand All @@ -14,9 +15,9 @@ public class MsmqExtensionFixture
public void CanBuildUsingMessageQueue()
{
var folder = TestData.Get(@"TestData\UsingMessageQueue");
var build = new Builder(folder, typeof(MsmqExtensionFactory), new[] { folder });
var build = new Builder(folder, new[] { typeof(MsmqExtensionFactory), typeof(UtilExtensionFactory) }, new[] { folder });

var results = build.BuildAndQuery(Build, "Wix4MessageQueue", "CustomAction");
var results = build.BuildAndQuery(Build, "Wix4MessageQueue", "CustomAction", "Wix4MessageQueueUserPermission", "Wix4MessageQueueGroupPermission", "Wix4Group", "Wix4User");
WixAssert.CompareLineByLine(new[]
{
"CustomAction:Wix4MessageQueuingExecuteInstall_A64\t3073\tWix4MsmqCA_A64\tMessageQueuingExecuteInstall\t",
Expand All @@ -25,7 +26,11 @@ public void CanBuildUsingMessageQueue()
"CustomAction:Wix4MessageQueuingRollbackInstall_A64\t3329\tWix4MsmqCA_A64\tMessageQueuingRollbackInstall\t",
"CustomAction:Wix4MessageQueuingRollbackUninstall_A64\t3329\tWix4MsmqCA_A64\tMessageQueuingRollbackUninstall\t",
"CustomAction:Wix4MessageQueuingUninstall_A64\t1\tWix4MsmqCA_A64\tMessageQueuingUninstall\t",
"Wix4Group:TestGroup\t\tTestGroup\t",
"Wix4MessageQueue:TestMQ\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\t\t\tMQLabel\t\tMQPath\t\t\t\t0",
"Wix4MessageQueueGroupPermission:TestMQ_TestGroup\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tTestMQ\tTestGroup\t160",
"Wix4MessageQueueUserPermission:TestMQ_TestUser\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tTestMQ\tTestUser\t160",
"Wix4User:TestUser\t\tTestUser\t\t\t\t0",
}, results);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
xmlns:msmq="http://wixtoolset.org/schemas/v4/wxs/msmq">
xmlns:msmq="http://wixtoolset.org/schemas/v4/wxs/msmq"
xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
<Fragment>
<util:Group Id="TestGroup" Name="TestGroup" />
<util:User Id="TestUser" Name="TestUser" />
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component>
<File Source="example.txt" />
<msmq:MessageQueue Id="TestMQ" Label="MQLabel" PathName="MQPath" />
<msmq:MessageQueue Id="TestMQ" Label="MQLabel" PathName="MQPath" >
<msmq:MessageQueuePermission Id="TestMQ_TestGroup" GetQueuePermissions="yes" GetQueueProperties="yes" Group="TestGroup" />
<msmq:MessageQueuePermission Id="TestMQ_TestUser" GetQueuePermissions="yes" GetQueueProperties="yes" User="TestUser" />
</msmq:MessageQueue>
</Component>
</ComponentGroup>
</Fragment>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

<ItemGroup>
<ProjectReference Include="..\..\wixext\WixToolset.Msmq.wixext.csproj" />
<ProjectReference Include="..\..\..\Util\wixext\WixToolset.Util.wixext.csproj" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading

0 comments on commit 7bfb29f

Please sign in to comment.