[wix-users] Problem installing Default Web Site web application on some 2008 R2 and 2012 server

Lavoie, Sylvain Sylvain.Lavoie at McKesson.com
Tue May 9 09:26:15 PDT 2017


Hi there,

I have to diagnose an installation problem I have installing on some 2008 R2 and 2012 server.
On some other server it work fine.

The error happen after some install/update of the application and I could not figure why.
It started with one of the Web Application installer and now on some server we cannot install any of the Web app. In Default Web Site.

The application contains 10 .msi built with wix 3.10.3, the projects include the Wix packages to ensure the build is done with the right version on all build servers.
Since I have so many Installer, I created a wixlib project where I maintain the common configuration.
Over all I have 3 installer who install 3 web application in the Default Web Site

Here is the extract of the Log
(The msi is called by Burn, so I assume the Log parameters are correct for diagnosis)

MSI (s) (C0:F4) [01:16:31:760]: Executing op: ActionStart(Name=StartIIS7ConfigTransaction,Description=Starting IIS Config Transaction,)
MSI (s) (C0:F4) [01:16:31:760]: Executing op: CustomActionSchedule(Action=StartIIS7ConfigTransaction,ActionType=11265,Source=BinaryData,Target=**********,CustomActionData=**********)
MSI (s) (C0:E4) [01:16:31:760]: Invoking remote custom action. DLL: C:\windows\Installer\MSI32A9.tmp, Entrypoint: StartIIS7ConfigTransaction
MSI (s) (C0:70) [01:16:31:760]: Generating random cookie.
MSI (s) (C0:70) [01:16:31:760]: Created Custom Action Server with PID 7384 (0x1CD8).
MSI (s) (C0:D4) [01:16:31:822]: Running as a service.
MSI (s) (C0:D4) [01:16:31:822]: Hello, I'm your 32bit Elevated Non-remapped custom action server.
MSI (s) (C0:F4) [01:16:31:853]: Executing op: ActionStart(Name=RollbackIIS7ConfigTransaction,Description=Rolling back IIS Config Transaction,)
MSI (s) (C0:F4) [01:16:31:853]: Executing op: CustomActionSchedule(Action=RollbackIIS7ConfigTransaction,ActionType=11521,Source=BinaryData,Target=**********,CustomActionData=**********)
MSI (s) (C0:F4) [01:16:31:853]: Executing op: ActionStart(Name=CommitIIS7ConfigTransaction,Description=Committing IIS Config Transaction,)
MSI (s) (C0:F4) [01:16:31:853]: Executing op: CustomActionSchedule(Action=CommitIIS7ConfigTransaction,ActionType=11777,Source=BinaryData,Target=**********,CustomActionData=**********)
MSI (s) (C0:F4) [01:16:31:853]: Executing op: ActionStart(Name=ConfigureIIs7Exec,Description=Configuring IIS,)
MSI (s) (C0:F4) [01:16:31:853]: Executing op: CustomActionSchedule(Action=ConfigureIIs7Exec,ActionType=11265,Source=BinaryData,Target=**********,CustomActionData=**********)
MSI (s) (C0:14) [01:16:31:853]: Invoking remote custom action. DLL: C:\windows\Installer\MSI3308.tmp, Entrypoint: ConfigureIIs7Exec
MSI (s) (C0:F4) [01:16:32:009]: Executing op: ActionStart(Name=WriteIIS7ConfigChanges,Description=Installing Config Keys and Values,)
MSI (s) (C0:F4) [01:16:32:009]: Executing op: CustomActionSchedule(Action=WriteIIS7ConfigChanges,ActionType=11265,Source=BinaryData,Target=**********,CustomActionData=**********)
MSI (s) (C0:40) [01:16:32:025]: Invoking remote custom action. DLL: C:\windows\Installer\MSI33A5.tmp, Entrypoint: WriteIIS7ConfigChanges
WriteIIS7ConfigChanges:  Error 0x80070002: Site not found for create application
WriteIIS7ConfigChanges:  Error 0x80070002: Failed to configure IIS application.
WriteIIS7ConfigChanges:  Error 0x80070002: WriteIIS7ConfigChanges Failed.
CustomAction WriteIIS7ConfigChanges returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (C0:F4) [01:16:32:165]: User policy value 'DisableRollback' is 0
MSI (s) (C0:F4) [01:16:32:165]: Machine policy value 'DisableRollback' is 0
Action ended 1:16:32: InstallFinalize. Return value 3.


Here some of the  shared fragments

Here the default web site locator


  *   I found this Locator was failing if the binding on port 80 had a Host Name in IIS



<?define DefaultWebSite = "Default Web Site" ?>



<Fragment>

    <Property Id="File_IIS_Config_Default" Value="1"/>



    <!-- Default website element and its default app pool -->

    <iis:WebSite Id='DefaultWebSite' Description='!(var.DefaultWebSite)'>

      <iis:WebAddress Id="AllUnassigned" Port="80" />

    </iis:WebSite>



  </Fragment>


I use a custom action to capture the SSL certificate settings and set them back at the end.
Win64 is defined to yes

  <Fragment>
    <Property Id="DEFAULT_WEB_PORT" Admin="yes" Secure="yes" Value="443"/>

    <Component Id="Cmp_DefaultWebSite" Directory="IISROOT" Guid="09d01ac5-" Shared="yes" Permanent="yes" >

      <RegistryValue Root="HKLM" Key="$(var.DefaultRegistryAppRoot)" Type="string" Name="DEFAULTWEB_CERT_THUMB" Value="[DEFAULTWEB_CERT_THUMB]"/>
      <RegistryValue Root="HKLM" Key="$(var.DefaultRegistryAppRoot)" Type="string" Name="DEFAULTWEB_CERT_STORE" Value="[DEFAULTWEB_CERT_STORE]"/>
    </Component>


    <Property Id="DEFAULTWEB_CERT_THUMB" Secure="yes" Admin="yes">
      <RegistrySearch Id="RegSearch_DEFAULTWEB_CERT_THUMB" Name="DEFAULTWEB_CERT_THUMB" Root="HKLM" Key="$(var.DefaultRegistryAppRoot)"  Type="raw" Win64="$(var.Win64)" />
    </Property>
    <Property Id="DEFAULTWEB_CERT_STORE" Secure="yes" Admin="yes">
      <RegistrySearch Id="RegSearch_DEFAULTWEB_CERT_STORE" Name="DEFAULTWEB_CERT_STORE" Root="HKLM" Key="$(var.DefaultRegistryAppRoot)"  Type="raw" Win64="$(var.Win64)" />
    </Property>
    <SetProperty Before="CA_GetDefaultWebsiteBinding"  Sequence="execute" Id="GETBINDING_WEBSITENAME" Value="$(var.DefaultWebSite)"/>
    <SetProperty Before="CA_GetDefaultWebsiteBinding"  Sequence="execute" Id="GETBINDING_PORT" Value="[DEFAULT_WEB_PORT]"/>
    <SetProperty Before="CA_GetDefaultWebsiteBinding"  Sequence="execute" Id="GETBINDING_PROTOCOL" Value="https"/>
    <SetProperty Before="CA_GetDefaultWebsiteBinding"  Sequence="execute" Id="GETBINDING_THUMBPRINT_VAR" Value="DEFAULTWEB_CERT_THUMB" />
    <SetProperty Before="CA_GetDefaultWebsiteBinding"  Sequence="execute" Id="GETBINDING_STORE_VAR" Value="DEFAULTWEB_CERT_STORE" />

    <SetProperty After="InstallInitialize"  Sequence="execute" Id="CA_SetDefaultWebsiteBinding" Value="Website=$(var.DefaultWebSite);Port=[DEFAULT_WEB_PORT];Protocol=https;Thumb=[DEFAULTWEB_CERT_THUMB];Store=[DEFAULTWEB_CERT_STORE]" />
    <SetProperty Before="CA_StartDefaultWebsite"  Sequence="execute" Id="STARTWEBSITE_WEBSITENAME" Value="$(var.DefaultWebSite)"/>
    <SetProperty Id="QtExec_DefaultWebsite_SetSslSettings"
                Before="QtExec_DefaultWebsite_SetSslSettings"
                Value=""[WindowsFolder]system32\inetsrv\APPCMD.EXE" set config "$(var.DefaultWebSite)" -commitPath:APPHOST -section:access -sslFlags:Ssl"
                Sequence="execute" />
    <CustomAction Id="CA_GetDefaultWebsiteBinding" BinaryKey="SICA" DllEntry="GetWebsiteBindingInfo" Execute="immediate" Return="check" />
    <!-- Set the value for the deferred custom action -->
    <CustomAction Id="CA_SetDefaultWebsiteBinding" BinaryKey="SICA" DllEntry="SetWebsiteBindingInfo" Execute="deferred" Return="check" />
    <CustomAction Id="CA_StartDefaultWebsite" BinaryKey="SICA" DllEntry="StartWebsite" Execute="immediate" Return="check"/>
    <CustomAction Id="QtExec_DefaultWebsite_SetSslSettings" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no" />
    <InstallExecuteSequence>
      <Custom Action="CA_GetDefaultWebsiteBinding" Before="InstallInitialize"></Custom>
      <Custom Action="CA_SetDefaultWebsiteBinding" Before="InstallFinalize">NOT REMOVE</Custom>
      <Custom Action="CA_StartDefaultWebsite" After="InstallFinalize">NOT REMOVE</Custom>
      <Custom Action="QtExec_DefaultWebsite_SetSslSettings" Before="InstallFinalize" >NOT REMOVE</Custom>
    </InstallExecuteSequence>
  </Fragment>

Here the web app itself


  <Fragment>

    <Property Id="File_IIS_Config_PresDocSubAPI" Value="1"/>



    <!--    PresDocSubAPI    -->

    <!-- Setup IIS Site, app pool and virtual directories -->

    <ComponentGroup Id="CmpGrp_PresDocSubAPI_IISConfig" Directory="Dir_PresDocSubAPI_WebApp">



      <ComponentRef Id="Cmp_DefaultWebSite"/>



      <!-- Configuring app pool -->

      <Component Id="Cmp_AppPool_PresDocSubAPI" KeyPath="yes" Guid="7B13B99A- ">

        <iis:WebAppPool Id="WebAppPool_PresDocSubAPI"

                        Name="CirDocSubmissionApiAppPool"

                        Identity="other"

                        User="SI_WEBSERVICE_USER"

                        ManagedPipelineMode="Integrated"

                        ManagedRuntimeVersion="v4.0"

                        IdleTimeout="20" />



      </Component>

      <Component Id="Cmp_PresDocSubAPI_Website" KeyPath="yes" Guid="A92F4E24- " >



        <iis:WebVirtualDir Id ="WebVirtualDir_PresDocSubAPI" Alias="DocSubAPI" Directory="Dir_PresDocSubAPI_WebApp"

                           WebSite="DefaultWebSite" >

          <iis:WebApplication Id="WebApp_PresDocSubAPI"

                              Name="DocSubAPI Application"

                              WebAppPool="WebAppPool_PresDocSubAPI"

                              ParentPaths="yes"/>

          <iis:WebDirProperties Id="WebDir_PresDocSubAPI"

                                Read="yes"

                                Write="yes"

                                Execute="no"

                                Script="yes"

                                AnonymousAccess="yes"

                                WindowsAuthentication="yes"/>

        </iis:WebVirtualDir>

      </Component>

    </ComponentGroup>

  </Fragment>



Is there a way to figure out what the IIS Custom action is trying to do when it fail to find the website?
Is the custom action us WMI or what?

Since it look like a configuration problem on the server I would like to find what is misconfigured and manually fix the problem on the server.
We are close to customer release and Reinstalling the Server is not an options.

Thanks for any help


Sylvain Lavoie



More information about the wix-users mailing list