I dunno.  I'm inclined to stick with the abstraction principle and trust that 
the /uninstall option will undo everything done by the /install option.

So I only have two custom actions but several applicable scenarios:

* Install - RunInstallCmd
* Rollback Install - RunUninstallCmd
* Repair - RunInstallCmd
* Rollback Repair - no action (RunUninstallCmd would partially uninstall 
service)
* Uninstall - RunUninstallCmd
* Rollback Uninstall - RunInstallCmd
* Upgrade - no action (unless this scenario is actually composed of 
install/uninstall scenarios)
* Rollback Upgrade - no action (ditto)

But theory and practice do no always coincide.  I'll have to put my theories to 
the test.

Eric.

On May 19, 2011, at 5:56 PM, Castro, Edwin G. (Hillsboro) wrote:

> My recommendation would be to perform any other activities that the service 
> performs itself during /install in a Windows Installer friendly fashion. The 
> reason is that Windows Installer (and WiX standard custom actions) behave 
> more robustly in the face of failures and associated rollback scenarios.
> 
> If you do decide to use a custom action to execute "service.exe /install" and 
> "service.exe /uninstall" then remember to handle the following scenarios:
> * Install
> * Rollback Install
> * Repair (Reinstall/Reconfigure)
> * Rollback Repair (Reinstall/Reconfigure)
> * Uninstall
> * Rollback Uninstall
> * Upgrade
> * Rollback Upgrade
> 
> That's a lot of custom actions and it's going to be very difficult to know 
> what to do in each scenario if you don't know what "service.exe /install" 
> does.
> 
> Edwin G. Castro
> Software Developer - Staff
> Digital Channels
> Fiserv
> Office: 503-746-0643
> Fax: 503-617-0291
> www.fiserv.com
> Please consider the environment before printing this e-mail
> 
>> -----Original Message-----
>> From: Brad Lemings [mailto:b...@rebit.com]
>> Sent: Thursday, May 19, 2011 4:21 PM
>> To: General discussion for Windows Installer XML toolset.
>> Subject: Re: [WiX-users] Debugging/Troubleshooting Service Installs
>> 
>> Hi Edwin,
>> 
>> I suspected this would be the case -- writing a custom action.  The service
>> however must be executed with the /install option before it can be started
>> so unless there's an alternative to writing a custom action, this is the only
>> possible solution.
>> 
>> Thanks for the help.
>> 
>> Eric.
>> 
>> -----Original Message-----
>> From: Castro, Edwin G. (Hillsboro) [mailto:edwin.cas...@fiserv.com]
>> Sent: Thursday, May 19, 2011 4:24 PM
>> To: General discussion for Windows Installer XML toolset.
>> Subject: Re: [WiX-users] Debugging/Troubleshooting Service Installs
>> 
>> ...
>> If you really want to execute your service with /install and /uninstall to 
>> install
>> and uninstall then you'll need to schedule a custom action to execute your
>> service appropriately. I would *highly* discourage this course of action.
>> 
>> Edwin G. Castro
>> Software Developer - Staff
>> Digital Channels
>> Fiserv
>> Office: 503-746-0643
>> Fax: 503-617-0291
>> www.fiserv.com
>> P Please consider the environment before printing this e-mail
>> 
>> 
>>> -----Original Message-----
>>> From: Brad Lemings [mailto:b...@rebit.com]
>>> Sent: Thursday, May 19, 2011 1:43 PM
>>> To: General discussion for Windows Installer XML toolset.
>>> Subject: Re: [WiX-users] Debugging/Troubleshooting Service Installs
>>> 
>>> Followup.  I have a better idea what the problem is.  Either msiexec
>>> is not "installing" the service by executing it with the proper
>>> /install argument or it is not executing the install command with
>> Administrator privileges.
>>> 
>>>> From the log, it appears that the /install option is specified so I'm
>>>> guessing
>>> the latter case is the real problem although its somewhat
>>> inconceivable that the ServiceControl element does not imply
>> Administrator privileges.
>>> 
>>> I'm guessing the Account and Password attributes are the real culprit.
>>> Now to prove it...
>>> 
>>> -----Original Message-----
>>> From: Brad Lemings [mailto:b...@rebit.com]
>>> Sent: Thursday, May 19, 2011 1:33 PM
>>> To: General discussion for Windows Installer XML toolset. (wix-
>>> us...@lists.sourceforge.net)
>>> Subject: [WiX-users] Debugging/Troubleshooting Service Installs
>>> 
>>> Greetings,
>>> 
>>> The following excerpt of a Wix file is supposed to install, stop,
>>> start, and uninstall a service (exact names have been tweaked):
>>> 
>>>      <Component Id='MySvc'
>>>                 Guid="5E7A07C7-9299-4992-A601-EBB79D441A83"
>>>                 Win64='$(var.Win64)'>
>>> 
>>>        <File Id='MySvcExe'
>>>              Source='$(var.TARGET_DIR)\$(var.MY_SERVICE_OUTPUT_NAME)'
>>>              KeyPath='yes' Checksum='yes'/>
>>> 
>>>        <ServiceInstall Id="InstallMySvc"
>>>                        Name="$(var.MY_SERVICE_SVC_NAME)"
>>>                        DisplayName="$(var.MY_SERVICE_DISPLAY_NAME)"
>>>                        Type="ownProcess"
>>>                        Start="auto"
>>>                        Arguments="/install"
>>>                        ErrorControl="normal"
>>>                        Description="$(var.MY_SERVICE_DESCRIPTION)"
>>>                        Account="[SERVICEACCOUNT]"
>>>                        Password="[SERVICEPASSWORD]" />
>>>        <ServiceControl Id="StartMySvc"
>>>                        Name="$(var.MY_SERVICE_SVC_NAME)"
>>>                        Start="install"
>>>                        Wait="yes" />
>>>        <ServiceControl Id="StopMySvcSvc"
>>>                        Name="$(var.MY_SERVICE_SVC_NAME)"
>>>                        Stop="both"
>>>                        Wait="yes" />
>>>        <ServiceControl Id="UninstallMySvcSvc"
>>>                        Name="$(var.MY_SERVICE_SVC_NAME)"
>>>                        Remove="uninstall" >
>>>          <ServiceArgument>/uninstall</ServiceArgument>
>>>        </ServiceControl>
>>>      </Component>
>>> 
>>> I'm trying to install the resulting .MSI with the following command:
>>> 
>>> msiexec /norestart /lvx*+ mysvc.log /i mysvc.msi
>>> 
>>> The install fails and msiexec reports via GUI that the service failed to 
>>> start.
>>> Part of the log shows this:
>>> 
>>> MSI (s) (2C:D8) [13:17:05:419]: Executing op: RegCreateKey() MSI (s)
>>> (2C:D8)
>>> [13:17:05:419]: Executing op:
>>> ActionStart(Name=InstallServices,Description=Installing new
>>> services,Template=Service: [2]) MSI (s) (2C:D8) [13:17:05:419]: Executing
>> op:
>>> ProgressTotal(Total=1,Type=1,ByteEquivalent=1300000)
>>> MSI (s) (2C:D8) [13:17:05:419]: Executing op: ServiceInstall(Name=My-
>>> Svc,DisplayName=My Svc,ImagePath="C:\Program Files\My\My-Svc.exe"
>>> /install,ServiceType=16,StartType=2,ErrorControl=1,,Dependencies=[~],,
>>> ,Pas sword=**********,Description=My Backup Service,,) MSI (s) (2C:D8)
>>> [13:17:06:060]: Executing op:
>>> ActionStart(Name=RollbackServiceConfig,,)
>>> MSI (s) (2C:D8) [13:17:06:060]: Executing op:
>>> 
>> CustomActionSchedule(Action=RollbackServiceConfig,ActionType=3329,Sour
>>> 
>> ce=BinaryData,Target=RollbackServiceConfig,CustomActionData=SchedServi
>>> ceConfig)
>>> MSI (s) (2C:D8) [13:17:06:060]: Executing op:
>>> ActionStart(Name=ExecServiceConfig,,)
>>> MSI (s) (2C:D8) [13:17:06:060]: Executing op:
>>> 
>> CustomActionSchedule(Action=ExecServiceConfig,ActionType=3073,Source=
>>> 
>> BinaryData,Target=ExecServiceConfig,CustomActionData=SchedServiceConfi
>>> gEURMy-SvcEUR0EURrestartEURrestartEURnoneEUR1EUR60EUREUR)
>>> MSI (s) (2C:D8) [13:17:06:060]: Creating MSIHANDLE (8) of type 790536
>>> for thread 1496 MSI (s) (2C:34) [13:17:06:060]: Invoking remote custom
>> action.
>>> DLL: C:\Windows\Installer\MSIC5E2.tmp, Entrypoint: ExecServiceConfig
>>> MSI
>>> (s) (2C:20) [13:17:06:060]: Generating random cookie.
>>> MSI (s) (2C:20) [13:17:06:075]: Created Custom Action Server with PID
>>> 784 (0x310).
>>> MSI (s) (2C:78) [13:17:06:091]: Running as a service.
>>> MSI (s) (2C:78) [13:17:06:091]: Hello, I'm your 32bit Elevated custom
>>> action server.
>>> MSI (s) (2C!B8) [13:17:06:263]: Creating MSIHANDLE (9) of type 790531
>>> for thread 3000 MSI (s) (2C!B8) [13:17:06:263]: Closing MSIHANDLE (9)
>>> of type
>>> 790531 for thread 3000 MSI (s) (2C:34) [13:17:06:263]: Closing
>>> MSIHANDLE (8) of type 790536 for thread 1496 MSI (s) (2C:D8)
>> [13:17:06:263]: Executing op:
>>> ActionStart(Name=StartServices,Description=Starting
>>> services,Template=Service: [1]) MSI (s) (2C:D8) [13:17:06:263]: Executing
>> op:
>>> ProgressTotal(Total=1,Type=1,ByteEquivalent=1300000)
>>> MSI (s) (2C:D8) [13:17:06:263]: Executing op: ServiceControl(,Name=My-
>>> Svc,Action=1,Wait=1,)
>>> MSI (s) (2C:D8) [13:17:36:310]: Note: 1: 2205 2:  3: Error MSI (s)
>>> (2C:D8)
>>> [13:17:36:310]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM
>>> `Error` WHERE `Error` = 1920 MSI (c) (FC:38) [13:17:36:310]: Font created.
>> Charset:
>>> Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
>>> 
>>> Error 1920. Service 'My Svc' (My-Svc) failed to start.  Verify that
>>> you have sufficient privileges to start system services.
>>> MSI (s) (2C:D8) [13:17:49:482]: Note: 1: 2205 2:  3: Error MSI (s)
>>> (2C:D8)
>>> [13:17:49:482]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM
>>> `Error` WHERE `Error` = 1709 MSI (s) (2C:D8) [13:17:49:482]: Product:
>>> My (64-bit) -- Error 1920. Service 'My Svc' (My-Svc) failed to start.
>>> Verify that you have sufficient privileges to start system services.
>>> 
>>> MSI (s) (2C:D8) [13:18:19:482]: Note: 1: 2205 2:  3: Error MSI (s)
>>> (2C:D8)
>>> [13:18:19:482]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM
>>> `Error` WHERE `Error` = 1920 MSI (c) (FC:38) [13:18:19:482]: Font created.
>> Charset:
>>> Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
>>> 
>>> Error 1920. Service 'My Svc' (My-Svc) failed to start.  Verify that
>>> you have sufficient privileges to start system services.
>>> MSI (s) (2C:F0) [13:18:21:216]: I/O on thread 1796 could not be cancelled.
>>> Error: 1168
>>> 
>>> Even with all information being logged, there still isn't enough to
>>> determine the problem.
>>> 
>>> When I don't abort the install and the files are copied into their
>>> final resting places, I can execute the following commands without any
>> errors:
>>> 
>>>                My-Svc.exe /install
>>>                sc start My-Svc
>>> 
>>> So it must be something wrong with the Wix file.  Any clues why the
>>> service fails to start?  Any tips, references, resources, links useful
>>> for debugging service installs using Wix?
>>> 
>>> Any and all help appreciated.
>>> 
>>> Eric.
>>> 
>>> ----------------------------------------------------------------------
>>> -------- What Every C/C++ and Fortran developer Should Know!
>>> Read this article and learn how Intel has extended the reach of its
>>> next- generation tools to help Windows* and Linux* C/C++ and Fortran
>>> developers boost performance applications - including clusters.
>>> http://p.sf.net/sfu/intel-dev2devmay
>>> _______________________________________________
>>> WiX-users mailing list
>>> WiX-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>> 
>>> ----------------------------------------------------------------------
>>> -------- What Every C/C++ and Fortran developer Should Know!
>>> Read this article and learn how Intel has extended the reach of its
>>> next- generation tools to help Windows* and Linux* C/C++ and Fortran
>>> developers boost performance applications - including clusters.
>>> http://p.sf.net/sfu/intel-dev2devmay
>>> _______________________________________________
>>> WiX-users mailing list
>>> WiX-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/wix-users
>> ------------------------------------------------------------------------------
>> What Every C/C++ and Fortran developer Should Know!
>> Read this article and learn how Intel has extended the reach of its next-
>> generation tools to help Windows* and Linux* C/C++ and Fortran developers
>> boost performance applications - including clusters.
>> http://p.sf.net/sfu/intel-dev2devmay
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>> ------------------------------------------------------------------------------
>> What Every C/C++ and Fortran developer Should Know!
>> Read this article and learn how Intel has extended the reach of its next-
>> generation tools to help Windows* and Linux* C/C++ and Fortran developers
>> boost performance applications - including clusters.
>> http://p.sf.net/sfu/intel-dev2devmay
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
> ------------------------------------------------------------------------------
> What Every C/C++ and Fortran developer Should Know!
> Read this article and learn how Intel has extended the reach of its
> next-generation tools to help Windows* and Linux* C/C++ and Fortran
> developers boost performance applications - including clusters.
> http://p.sf.net/sfu/intel-dev2devmay
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to