[wix-users] pass credentials to a service and retry if wrong

Rob Mensching rob at firegiant.com
Wed Aug 5 10:40:20 PDT 2020


Note: LaunchElevatedApplication was actually designed to be used for handling the "configuration" executable scenario. Ordering such a thing in the chain is very challenging.

---
Short replies here. Complete answers here: https://www.firegiant.com/services/

-----Original Message-----
From: wix-users <wix-users-bounces at lists.wixtoolset.org> On Behalf Of Hoover, Jacob via wix-users
Sent: Wednesday, August 5, 2020 10:32 AM
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>; Alan Sinclair <anadem at gmail.com>
Cc: Hoover, Jacob <Jacob.Hoover at greenheck.com>
Subject: Re: [wix-users] pass credentials to a service and retry if wrong

I’d strongly lean towards a bundle, with your MSI first in the chain and a custom exe as the second.  The bundle UI could capture the initial credentials (and be CLI driven), installs your MSI, and then runs your custom exe.  The exe would have to be aware of the UILevel, and prompt for fresh credentials in a full UI if the passed in ones are incorrect.

From: wix-users <wix-users-bounces at lists.wixtoolset.org> On Behalf Of Bryan Dam via wix-users
Sent: Wednesday, August 5, 2020 7:42 AM
To: Alan Sinclair <anadem at gmail.com>
Cc: Bryan Dam <bryand at recastsoftware.com>; WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Subject: Re: [wix-users] pass credentials to a service and retry if wrong

As Jacob pointed out, we might be talking apples and oranges here. I focused on your first sentence: can you verify credentials and force a user to enter valid ones? Yes. We simply added a custom UI page with a button to test their credentials by running a CA. The next button is disabled until that CA sets a particular property to true. When then use those credentials to configure the service within that same installer.

You are trying to pass creds to a service, not configure the service to run with those creds. I’m sure there’s ways to do it but I think attempting to do this kind of thing within the installer itself is going to be hacky. The installer is meant to install the service which in your use case it’s going to do just fine. Trying to have the installer manage the service itself (can it register with your backend?) is just bad ju-ju in my mind. As long as the service starts, the installer did its job.

There’s two solutions I’d look into:
First, do whatever validation you need upfront like I describe above. Whatever you need to do to make sure that registration will succeed: do that. This might mean adding ‘validate config’ function to your backend that you can then call from a CA.
Second, add a custom action to trigger some custom configuration UI after the installer finishes (docs example<https://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/run_program_after_install.html<https://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/run_program_after_install.html>>). The installer installed the service, it’s running, now it’s up to your code/UI to make sure it’s working the want you need it.

From: Alan Sinclair <anadem at gmail.com<mailto:anadem at gmail.com>>
Sent: Tuesday, August 4, 2020 5:58 PM
To: Bryan Dam <bryand at recastsoftware.com<mailto:bryand at recastsoftware.com>>
Cc: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org<mailto:wix-users at lists.wixtoolset.org>>
Subject: Re: [wix-users] pass credentials to a service and retry if wrong

thanks so much! where in the InstallExecuteSequence does the CA go?
If you can share any other details (code fragment for the UI API in particular!) please let me know

thanks
Alan


On Tue, Aug 4, 2020 at 1:09 PM Bryan Dam <bryand at recastsoftware.com<mailto:bryand at recastsoftware.com<mailto:bryand at recastsoftware.com%3cmailto:bryand at recastsoftware.com>>> wrote:
Yes, you can write a custom action that validates a set of credentials and sets properties. We do this to both display the results (including any error message) and to control the enabled status of the next button. Until a valid set of credentials is given they can't proceed. There's options for marking the property hidden as well so that it's not written to the logs.

There's probably some level of 'the password is in memory' concerns here but I'm not smart enough to give that discussion justice.

-----Original Message-----
From: wix-users <wix-users-bounces at lists.wixtoolset.org<mailto:wix-users-bounces at lists.wixtoolset.org<mailto:wix-users-bounces at lists.wixtoolset.org%3cmailto:wix-users-bounces at lists.wixtoolset.org>>> On Behalf Of Alan Sinclair via wix-users
Sent: Tuesday, August 4, 2020 3:25 PM
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org<mailto:wix-users at lists.wixtoolset.org<mailto:wix-users at lists.wixtoolset.org%3cmailto:wix-users at lists.wixtoolset.org>>>
Cc: Alan Sinclair <anadem at gmail.com<mailto:anadem at gmail.com<mailto:anadem at gmail.com%3cmailto:anadem at gmail.com>>>
Subject: [wix-users] pass credentials to a service and retry if wrong

Can a wix install which installs a service get user credentials, pass the creds to the service, then if the credentials fail login ask the user to re-enter them?

I *really *need advice please! I tried to ask this last week but didn't put the question well (wasn't fully aware of my customer's needs)*.

The package installs a service. The user credentials are passed to the service (which runs as Local System so does not itself require creds), and the service registers the user with a backend process. If the registration fails my customer wants to allow the user to re-enter their credentials and retry the registration rather than fail the install.

Of course, the binaries in the install package have to be in place to run the service. I'm familiar with getting user info using a WixUI dialog but I don't know how to enable re-entry of creds to do what my customer wants

Can a deferred custom action DLL use the Wix UI to get the user info?
Perhaps handling the credentialing and registration should be done from a custom action DLL?

As a less-desirable option my customer suggested that if the user registration fails then the install should not roll back and instead should allow the user to re-run the install (without replacing files) to re-enter their credentials and pass them to the service again. I don't know how to do that either, and it seems less optimal.

(The customer's current installer is authored in Innosetup and does what's needed with registering the user and allowing credential re-entry when rqd, but has other failings so they want to move to Wix.)

thanks
Alan

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/<http://www.firegiant.com>

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/<http://www.firegiant.com/>
NOTE: This email was received from an external source. Please use caution when opening links or attachments in the message.

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/


More information about the wix-users mailing list