[wix-users] Having issue running an executable from package in a managed custom action

Tigran Galoyan tigran.galoyan at gmail.com
Tue Feb 21 10:52:50 PST 2017


I was tentative to do it that way, but after your email I did exactly like
that. I embedded the DComPerm.exe into my CustomActions project as an
embedded resource then I extracted it into a temporary file during the
launch of my custom action and run it and deleted it at the end. Looks like
it works fine for me. Thanks, Phill

On Tue, Feb 21, 2017 at 10:50 AM, Phill Hogland <phill.hogland at rimage.com>
wrote:

> Based on this thread, it sounds like to just add the EXE to your managed
> CA project as 'content' and then it will get extracted to the TEMP folder.
>
> http://windows-installer-xml-wix-toolset.687559.n2.nabble.
> com/Extract-Binary-file-from-MSI-to-Temp-folder-using-C-td7588682.html
>
>
> But I have not done this myself.
>
>
> ________________________________
> From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of
> Tigran Galoyan <tigran.galoyan at gmail.com>
> Sent: Tuesday, February 21, 2017 9:38:02 AM
> To: WiX Toolset Users Mailing List
> Subject: Re: [wix-users] Having issue running an executable from package
> in a managed custom action
>
> Hi Phill,
>
> Thanks for the quick reply. I might need to look into WMI as an alternative
> approach, however, the DComPerm from WinSDK, even though from the old
> Win2K/WinXP era does the job on my Win7 OS when launched from command
> prompt. So, I thought it would work if launched from within my managed
> custom action. I hope it would work if I only found a way to run an
> executable from my package without installing it. That's what I'm
> struggling with at the moment :)
>
> Thanks,
> Tigran
>
>
> On Tue, Feb 21, 2017 at 10:09 AM, Phill Hogland <phill.hogland at rimage.com>
> wrote:
>
> > I do not know the answer to your question about launching an exe from
> > within a MSI without installing it.  I use a Burn bundle to chain my
> MSIs,
> > and burn can launch a configuration app at the end of the chain.  See
> > ApprovedExeForElevation in the CHM.  I believe that DComPerm was a sample
> > from the WinSDK from Win2K/WinXP era and it is known to have some issues
> > with regard to newer x64 OS.  If using a managed CA it seems that using
> WMI
> > objects would be a better choice.  For a native CA I found looking at the
> > WixComPlus extension's source to be helpful when writing a CA that
> > configures DCOM security.   This might be helpful.
> >
> > http://stackoverflow.com/questions/11363342/change-
> > dcom-config-security-settings-using-powershell
> >
> >
> > ________________________________
> > From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of
> > Tigran Galoyan <tigran.galoyan at gmail.com>
> > Sent: Tuesday, February 21, 2017 8:37:01 AM
> > To: wix-users at lists.wixtoolset.org
> > Subject: [wix-users] Having issue running an executable from package in a
> > managed custom action
> >
> > Hi all,
> >
> >
> > I have a MSI package that besides the actual components to be installed
> > also on the target machine also has an executable, that should not be
> > installed, rather just be launched after a successful installation in the
> > managed custom action. The custom action code snippet is the following:
> >
> >
> >
> >
> >
> >
> >
> >
> > *public class CustomActions{    [CustomAction]    public static
> > ActionResult CAM_RunDComPerm(Session session)    {        try
> > {            string path2DComPermExe =
> > Path.Combine(Assembly.GetExecutingAssembly().Location, "DComPerm.exe");*
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > *            using (Process proc = Process.Start(path2DComPermExe,
> "-runas
> > \"{SOME-GUID}\" username password"))            {
> > proc.WaitForExit(5000);            }                            return
> > ActionResult.Success;        }        catch (Exception ex)
> > {            session.Log("ERROR in CAM_RunDComPerm custom action {0}",
> > ex.ToString());*
> >
> >
> >
> > *            return ActionResult.Failure;        }    }}*
> >
> > What it does exactly, it sets some DCOM settings for a specific component
> > that gets installed as part of the MSI package. To do that I run a
> special
> > tool DComPerm.exe with the "-runas \"{SOME-GUID}\" username password"
> > command line arguments.
> >
> > To call the custom action I have the following in my main wxs file:
> >
> >
> >
> > *<InstallExecuteSequence>     <Custom Action="CA_LaunchDComPerm"
> > After="InstallFinalize">NOT Installed</Custom></InstallExecuteSequence>*
> >
> > *<Binary Id="MyInstallerCustomActions" SourceFile
> > ="..\Output\MyCustomActions.CA.dll" />*
> > *<CustomAction Id="CA_LaunchDComPerm" Return="check"
> > BinaryKey="MyInstallerCustomActions" DllEntry="CAM_RunDComPerm"
> > Impersonate="no" />*
> >
> > However, the custom action call fails right at the beginning when
> combining
> > the path to get the absolute path to the DComPerm.exe tool to be called.
> > Looks like it cannot figure out the absolute path to the tool in the MSI
> > package. I don't want to install that tool along with other components
> and
> > then launch it at the end from the INSTALLDIRECTORY (my target directory
> to
> > install to), but to simply launch it as it exists in the package.
> > Unfortunately cannot specify the absolute path to it.
> >
> > Any help how to make this happen?
> >
> >
> > Thanks,
> > Tigran
> >
> > ____________________________________________________________________
> > WiX Toolset Users Mailing List provided by FireGiant
> > http://www.firegiant.com/
> >
> > ____________________________________________________________________
> > WiX Toolset Users Mailing List provided by FireGiant
> > http://www.firegiant.com/
> >
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>


More information about the wix-users mailing list