Hi,

I am calling a custom action on uninstall just to ensure that our 5 services 
are actually stopped before we try to remove them...

However I am getting an error that confuses me since everything looks kosher...

Anyone see any issues with what I am doing?

Here is the error from the log file:
MSI (s) (6C:D4) [23:30:16:875]: Executing op: 
ActionStart(Name=CA_STOPESSERVICE.A54690A6_C7B5_477D_ADAF_916A4A173FDF,Description=CA:
 Stopping TITUS Enterprise Settings Service...,)
MSI (s) (6C:D4) [23:30:16:875]: Executing op: 
CustomActionSchedule(Action=CA_STOPESSERVICE.A54690A6_C7B5_477D_ADAF_916A4A173FDF,ActionType=3137,Source=BinaryData,Target=StopServiceForUninstall,CustomActionData=TITUS.Enterprise.Settings.Host|)
MSI (s) (6C:28) [23:30:16:937]: Invoking remote custom action. DLL: 
C:\Windows\Installer\MSIF6FB.tmp, Entrypoint: StopServiceForUninstall
CustomAction CA_STOPESSERVICE.A54690A6_C7B5_477D_ADAF_916A4A173FDF returned 
actual error code 1154 but will be translated to success due to continue marking


Custom Action:
<CustomAction Id="SetStopESService" Property="CA_STOPESSERVICE" 
Value="TITUS.Enterprise.Settings.Host|" />
<CustomAction Id="CA_STOPESSERVICE" BinaryKey="BIN_CustomActionMM" 
DllEntry="StopServiceForUninstall" Impersonate="no" Execute="deferred" 
Return="ignore" />

<InstallExecuteSequence>
<Custom Action="SetStopESService" After="InstallValidate">Installed</Custom>
<Custom Action="CA_STOPESSERVICE" After="StopServices">Installed</Custom>

DTF Custom Action DLL C#

public static ActionResult StopServiceForUninstall(Session session)
        {
            var serviceName = string.Empty;
            try
            {
                if (session == null)
                {
                    throw new ArgumentNullException("session");
                }

                var tempString = GetSessionProperty(session, 
"CustomActionData", false);
                var parts = tempString.Split(new[] { '|' });
                serviceName = parts[0];

                var sc = new ServiceController { ServiceName = serviceName };

                if (sc.Status == ServiceControllerStatus.Running)
                {
                    // Stop the service
                    try
                    {
                        // Stop the service.
                        sc.Stop();
                        sc.WaitForStatus(ServiceControllerStatus.StopPending, 
TimeSpan.FromSeconds(30));
                    }
                    catch (TimeoutException exception)
                    {
                        WriteErrorLogInstall(session, "TimeoutException: could 
not stop the " + serviceName + " service.", exception, true);
                    }
                }
            }
            catch (Exception ex)
            {
                WriteErrorLogInstall(session, "Could not stop service: " + 
serviceName + " .", ex, true);
            }
            return ActionResult.Success;
        }

Thanks,

Steve


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to