This is a follow-up to this question, same project- new symptoms.
I have used WiX Install tools in Visual Studio to create create an installer for my C# Windows Forms application. The plan is to have SCCM push the application out to our 50+ (Windows 10) workstations.
Currently this .msi is not working either manually executed or pushed by SCCM. The (non) results are identical regardless of method:
This installer does remove any previous version installed on the target system. It then claims to have installed the new version (1.1.1.1) and the new version appears on the Apps & Features list in Settings. References to the new version of the application are placed in the registry.
However none of the files are installed, none of the folders or shortcuts are created. Preexisting files, folders, and shortcuts are removed.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="82106de5-4591-4239-8356-a7cfa44fbc16" Name="PHSRP Dashboard" Language="1033" Version="1.1.1.1" Manufacturer="CSUS Public Health Survey Research Program" UpgradeCode="8420CB2B-6692-4BB9-A15A-023C7E69FB26">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64"/>
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed."
AllowSameVersionUpgrades="yes"
IgnoreRemoveFailure="yes"
/>
<MediaTemplate />
<!-- UIRef Id="WixUI_Minimal" Adds License dialog -->
<!-- UIRef Id="WixUI_Advanced" Adds multiple dialog option popups -->
<Feature Id="MainProduct" Title="PHSRP Dashboard" Level="1" Absent="disallow">
<ComponentGroupRef Id="ProductComponents" />
<ComponentRef Id="CMP_StartMenu_Dashboard"/>
<ComponentRef Id="CMP_DashboardAutoStart"/>
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder">
<Directory Id="PHSRP" Name="PHSRP" />
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="PHSRP_Menu" Name="PHSRP"/>
</Directory>
<Directory Id="StartupFolder"/>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="PHSRP">
<Component Id="CMP_Dashboard.EXE" Guid="939EC7DE-E6BD-4364-BFC7-7B03C03B7CBB">
<File Id="FILE_Dashboard.EXE" Source="$(var.PHSRP_Dashboard.TargetDir)PHSRP_Dashboard.exe" KeyPath ="yes"/>
</Component>
<Component Id="CMP_DasboardConfig" Guid="4081EC5F-EAD0-4003-8B43-DFF1EF6B4348">
<File Id="FILE_DashboardConfig" Source="$(var.PHSRP_Dashboard.TargetDir)\PHSRP_Dashboard.exe.config" KeyPath ="yes"/>
</Component>
<Component Id="CMP_EntityFramework" Guid="D685B056-E64C-4C9A-B0B0-C74DC5EF085E">
<File Id="FILE_EntityFramework" Source="$(var.PHSRP_Dashboard.TargetDir)\EntityFramework.dll" KeyPath="yes"/>
</Component>
<Component Id="CMP_EntityFrameworkSqlServer" Guid="E017DCC8-1439-4CB6-BFDB-A8C86BF99D74">
<File Id="FILE_EntityFrameworkSqlServer" Source="$(var.PHSRP_Dashboard.TargetDir)\EntityFramework.SqlServer.dll" KeyPath="yes"/>
</Component>
<Component Id="CMP_ReportViewerCommon" Guid="972220E8-5DD4-451D-847D-32DAC050D639">
<File Id="FILE_ReportViewerCommon" Source="C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.Common\12.0.0.0__89845dcd8080cc91\Microsoft.ReportViewer.Common.dll" KeyPath="yes"/>
</Component>
<Component Id="CMP_ReportViewerDataVisualization" Guid="B0AF7500-5743-4B48-85FA-9BA12E3B554A">
<File Id="FILE_ReportViewerDataVisualization" Source="C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.DataVisualization\12.0.0.0__89845dcd8080cc91\Microsoft.ReportViewer.DataVisualization.dll" KeyPath="yes"/>
</Component>
<Component Id="CMP_ReportViewerProcessingObjectModel" Guid="75E5E7AD-E1AF-41BC-BC95-464272966629">
<File Id="FILE_ReportViewerProcessingObjectModel" Source="C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel\12.0.0.0__89845dcd8080cc91\Microsoft.ReportViewer.ProcessingObjectModel.dll" KeyPath="yes"/>
</Component>
<Component Id="CMP_ReportViewerWinForms" Guid="831D08B1-047B-46E0-AA89-C1D47B0B4EBE">
<File Id="FILE_ReportViewerWinForms" Source="C:\Program Files (x86)\Microsoft Visual Studio 14.0\ReportViewer\Microsoft.ReportViewer.WinForms.dll" KeyPath="yes"/>
</Component>
<Component Id="CMP_SQLServerTypes" Guid="EE385FEE-A4C9-4F9A-800E-F2B9C573DCA7">
<File Id="FILE_SQLServerTypes" Source="C:\WINDOWS\assembly\GAC_MSIL\Microsoft.SqlServer.Types\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll" KeyPath="yes"/>
</Component>
<Component Id="CMP_SystemNetHttp" Guid="F56581DD-D9D0-4140-BB66-9DEF7FF66D7B">
<File Id="FILE_SystemNetHttp" Source="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Net.Http.dll" KeyPath="yes"/>
</Component>
</ComponentGroup>
<DirectoryRef Id="PHSRP_Menu">
<Component Id="CMP_StartMenu_Dashboard" Guid="B8C6D5CE-26BD-45E1-904D-97FC3EEADAE8">
<Shortcut Id="SCUT_RunDashboard" Name="PHSRP Dashboard" Description="Start Dashboard"
Target="[#FILE_Dashboard.EXE]"
WorkingDirectory="PHSRP" />
<RemoveFolder Id="UI_RemoveShortcut" Directory="PHSRP_Menu" On="uninstall"/>
<RegistryKey Root="HKCU" Key="Software\PHSRP\PHSRP_Dashboard">
<RegistryValue Name="sm_shortcut" Type="integer" Value="1" KeyPath="yes"/>
</RegistryKey>
</Component>
</DirectoryRef>
<DirectoryRef Id="StartupFolder">
<Component Id="CMP_DashboardAutoStart" Guid="E10E004B-8A38-43F9-8365-4C44267565F2">
<Shortcut Id="SCUT_DashboardAutoStart" Name="PHSRP Dashboard" Description="AutoStart Dashboard"
Target="[#FILE_Dashboard.EXE]"
WorkingDirectory="PHSRP" />
<RegistryKey Root="HKCU" Key="Software\PHSRP\PHSRP_Dashboard">
<RegistryValue Name="su_shortcut" Type="integer" Value="1" KeyPath="yes"/>
</RegistryKey>
</Component>
</DirectoryRef>
</Fragment>
</Wix>
The install log is too large to include in this post and I am not familiar enough with the process to know what lines I can delete, so it is posted on my Google drive.
It indicates a successful install:
MSI (s) (DC:40) [18:34:09:378]: Note: 1: 1728
MSI (s) (DC:40) [18:34:09:378]: Note: 1: 2205 2: 3: Error
MSI (s) (DC:40) [18:34:09:378]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1728
MSI (s) (DC:40) [18:34:09:378]: Note: 1: 2205 2: 3: Error
MSI (s) (DC:40) [18:34:09:378]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709
MSI (s) (DC:40) [18:34:09:378]: Product: PHSRP Dashboard -- Configuration completed successfully.
MSI (s) (DC:40) [18:34:09:378]: Windows Installer reconfigured the product. Product Name: PHSRP Dashboard. Product Version: 1.1.1.1. Product Language: 1033. Manufacturer: CSUS Public Health Survey Research Program. Reconfiguration
success or error status: 0.
The strangest thing I see is that all the component "Requests" have been set to Null, which I understand means "do nothing". Why?
MSI (s) (DC:40) [18:34:09:300]: PROPERTY CHANGE: Deleting MsiRestartManagerSessionKey property. Its current value is '954c47bc279c3944a8f5054677c82967'.
MSI (s) (DC:40) [18:34:09:300]: Note: 1: 2205 2: 3: Dialog
MSI (s) (DC:40) [18:34:09:300]: Feature: MainProduct; Installed: Advertise; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:300]: Component: CMP_Dashboard.EXE; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:300]: Component: CMP_DasboardConfig; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:300]: Component: CMP_EntityFramework; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:300]: Component: CMP_EntityFrameworkSqlServer; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:300]: Component: CMP_ReportViewerCommon; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:300]: Component: CMP_ReportViewerDataVisualization; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:300]: Component: CMP_ReportViewerProcessingObjectModel; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:315]: Component: CMP_ReportViewerWinForms; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:315]: Component: CMP_SQLServerTypes; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:315]: Component: CMP_SystemNetHttp; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:315]: Component: CMP_StartMenu_Dashboard; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:315]: Component: CMP_DashboardAutoStart; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:315]: Component: __CMP_StartMenu_Dashboard65; Installed: Null; Request: Null; Action: Null
MSI (s) (DC:40) [18:34:09:315]: Component: __CMP_DashboardAutoStart65; Installed: Null; Request: Null; Action: Null
Here is another weirdness- The log says it is not going to remove existing products (Skipping RemoveExistingProducts) but it does remove the existing version:
MSI (s) (DC:40) [18:34:09:331]: Doing action: RemoveExistingProducts
MSI (s) (DC:40) [18:34:09:331]: Note: 1: 2205 2: 3: ActionText
Action ended 18:34:09: InstallValidate. Return value 1.
MSI (s) (DC:40) [18:34:09:331]: Skipping RemoveExistingProducts action: current configuration is maintenance mode or an uninstall
Action start 18:34:09: RemoveExistingProducts.
MSI (s) (DC:40) [18:34:09:331]: Doing action: InstallInitialize
MSI (s) (DC:40) [18:34:09:331]: Note: 1: 2205 2: 3: ActionText
Action ended 18:34:09: RemoveExistingProducts. Return value 0.
Why is it referring to this install as "maintenance mode or uninstall"?
Update:
I ran the install on a freshly imaged machine. The installation completed normally, all the files and shortcuts are present, but for some reason the application simply does not run. Double-clicking on the PHSRP_Dashboard.exe file produces no error message. The Application log Shows a .NET error then an Application error. I don't know if this has to do with my application, the new computer's network connection, or the installer. I'm done for today though, back at it tomorrow.
Meanwhile the new install log is online.
Update 2:
The problem on the fresh workstation was a configuration issue. The installer is working as expected- at least when run manually. I need to try SCCM again.
The final piece to this puzzle is repairing whatever damage was done to the machines I was using for the SCCM Test. I can reimage them but would prefer to avoid that. Any suggestions would be welcome.