WiX 安装程序声称成功但未采取任何实际操作
WiX Installer Claims Success but takes no real action
这是 的后续行动,相同项目 - 新症状。
我已经使用 Visual Studio 中的 WiX 安装工具为我的 C# Windows Forms 应用程序创建安装程序。计划是让 SCCM 将应用程序推送到我们的 50 多个 (Windows 10) 个工作站。
目前此 .msi 无法正常工作,无论是手动执行还是由 SCCM 推送。无论方法如何,(非)结果都是相同的:
此安装程序会删除目标系统上安装的所有先前版本。然后它声称已经安装了新版本(1.1.1.1)并且新版本出现在设置中的应用和功能列表中。对新版本应用程序的引用放在注册表中。
但是安装了 none 个文件,创建了 none 个文件夹或快捷方式。先前存在的文件、文件夹和快捷方式将被删除。
<?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.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.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.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.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>
install log 太大,无法包含在此 post 中,我对流程不够熟悉,不知道可以删除哪些行,因此 posted on我的 Google 驱动器。
表示安装成功:
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.
我看到的最奇怪的事情是所有组件 "Requests" 都被设置为 Null,我理解这意味着 "do nothing"。为什么?
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
这是另一个奇怪的地方——日志说它不会删除现有产品(Skipping RemoveExistingProducts)但它会删除现有版本:
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.
为什么将此安装称为 "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.
这个难题的最后一部分是修复我用于 SCCM 测试的机器的任何损坏。我可以重新成像它们,但宁愿避免这种情况。欢迎任何建议。
Launch Error: That application launch problem is probably a trifle such as a missing runtime. Maybe even the .NET framework
itself? (happens to me that one). I would check that first. What other runtimes do you need? Java
, Visual Studio C/C++ Runtime
, etc...
启动错误Check-List:我有这个"torpedoes full spread check-list"
这里:Desktop applicaton not opening after installation in client system。本质上是一个 "ideas list",用于说明您的启动过程中可能存在的问题。虽远未完成,但仍足以让大家感叹。
Prerequisites:简单地看了这个之后,似乎这个来源中存在一些与包含应该包含的文件有关的问题通过运行时安装,而不是直接作为文件包含在您自己的 MSI 中。运行时似乎是:
.NET Framework
(以适用的版本为准)
Microsoft Report Viewer
(2012 or 2015 - 不确定是哪个)
Microsoft CLR Types for SQL Server
(2012、2014、2016 - 不确定是哪个)
- 也许在功能包中检查它。
- Sample 2016 feature pack。单击 "Details"。
SCCM:您需要通过可从 Microsoft 下载的自己的 MSI 文件部署这些先决条件/运行时。对于通用分发,您可以制作一个 Burn 包(一个 setup.exe WiX 生成器)或一些可以执行相同操作的部署工具(Installshield、Advanced Installer 等)。在你的情况下,你只需通过 SCCM 将它们推出,但要控制住你的马...
Cleanup:您需要删除WiX源中这些文件的错误包含,这将导致side-effects 卸载和主要升级(主要升级卸载旧版本并安装新版本)。 MSI 文件认为它们 "own" 无论您在设置中包含什么文件(除非您将它们标记为不受 MSI 控制)。因此,他们将尝试 "rip out" 您包含的文件。这可能会导致您的应用程序无法启动或无法正常运行(以及其他依赖于这些运行时的应用程序)。请注意,由于 OS-override 功能,MSI 文件并不总是能成功卸载文件。
错误包含:请删除GAC
中包含的所有文件、Visual Studio folders
和 Reference Assemblies folders
。您通常不应该从那里包含单个文件进行部署。寻找运行时包。编译一个新的 MSI 并开始测试它。请不要在太多脏系统上进行测试。可以通过手动删除文件来模拟脏状态
清理过程:在升级到最新版本的过程中 - 现在没有错误包含的运行时文件 - 你可能会看到这些运行时文件是"ripped out"。现在您需要在完成软件包升级后部署先决条件。这应该将运行时文件放回原位。希望(可能还有其他问题)。
- Dangling Versions: Your previous questions seems to indicate that you may have "dangling versions" on these systems. In order to
deal with this I would honestly pull back all deployed software via
SCCM and then deploy the newest version and finally the runtimes
spoken about above.
部分链接:
- 加入这个旧的 "permission denied" 修复列表:System.UnauthorizedAccessException while running .exe under program files
- 我想提醒您,通过新机制简化 WiX 源文件的可能性 auto-generate 许多不需要指定的属性。请参阅:Simplifying WiX markup。我现在不会这样做,因为你还活着,但对于未来的包裹,你可以试试这个。
这是
我已经使用 Visual Studio 中的 WiX 安装工具为我的 C# Windows Forms 应用程序创建安装程序。计划是让 SCCM 将应用程序推送到我们的 50 多个 (Windows 10) 个工作站。
目前此 .msi 无法正常工作,无论是手动执行还是由 SCCM 推送。无论方法如何,(非)结果都是相同的:
此安装程序会删除目标系统上安装的所有先前版本。然后它声称已经安装了新版本(1.1.1.1)并且新版本出现在设置中的应用和功能列表中。对新版本应用程序的引用放在注册表中。
但是安装了 none 个文件,创建了 none 个文件夹或快捷方式。先前存在的文件、文件夹和快捷方式将被删除。
<?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.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.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.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.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>
install log 太大,无法包含在此 post 中,我对流程不够熟悉,不知道可以删除哪些行,因此 posted on我的 Google 驱动器。
表示安装成功:
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.
我看到的最奇怪的事情是所有组件 "Requests" 都被设置为 Null,我理解这意味着 "do nothing"。为什么?
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
这是另一个奇怪的地方——日志说它不会删除现有产品(Skipping RemoveExistingProducts)但它会删除现有版本:
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.
为什么将此安装称为 "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.
这个难题的最后一部分是修复我用于 SCCM 测试的机器的任何损坏。我可以重新成像它们,但宁愿避免这种情况。欢迎任何建议。
Launch Error: That application launch problem is probably a trifle such as a missing runtime. Maybe even the
.NET framework
itself? (happens to me that one). I would check that first. What other runtimes do you need?Java
,Visual Studio C/C++ Runtime
, etc...
启动错误Check-List:我有这个"torpedoes full spread check-list"
这里:Desktop applicaton not opening after installation in client system。本质上是一个 "ideas list",用于说明您的启动过程中可能存在的问题。虽远未完成,但仍足以让大家感叹。
Prerequisites:简单地看了这个之后,似乎这个来源中存在一些与包含应该包含的文件有关的问题通过运行时安装,而不是直接作为文件包含在您自己的 MSI 中。运行时似乎是:
.NET Framework
(以适用的版本为准)Microsoft Report Viewer
(2012 or 2015 - 不确定是哪个)Microsoft CLR Types for SQL Server
(2012、2014、2016 - 不确定是哪个)- 也许在功能包中检查它。
- Sample 2016 feature pack。单击 "Details"。
SCCM:您需要通过可从 Microsoft 下载的自己的 MSI 文件部署这些先决条件/运行时。对于通用分发,您可以制作一个 Burn 包(一个 setup.exe WiX 生成器)或一些可以执行相同操作的部署工具(Installshield、Advanced Installer 等)。在你的情况下,你只需通过 SCCM 将它们推出,但要控制住你的马...
Cleanup:您需要删除WiX源中这些文件的错误包含,这将导致side-effects 卸载和主要升级(主要升级卸载旧版本并安装新版本)。 MSI 文件认为它们 "own" 无论您在设置中包含什么文件(除非您将它们标记为不受 MSI 控制)。因此,他们将尝试 "rip out" 您包含的文件。这可能会导致您的应用程序无法启动或无法正常运行(以及其他依赖于这些运行时的应用程序)。请注意,由于 OS-override 功能,MSI 文件并不总是能成功卸载文件。
错误包含:请删除
GAC
中包含的所有文件、Visual Studio folders
和Reference Assemblies folders
。您通常不应该从那里包含单个文件进行部署。寻找运行时包。编译一个新的 MSI 并开始测试它。请不要在太多脏系统上进行测试。可以通过手动删除文件来模拟脏状态清理过程:在升级到最新版本的过程中 - 现在没有错误包含的运行时文件 - 你可能会看到这些运行时文件是"ripped out"。现在您需要在完成软件包升级后部署先决条件。这应该将运行时文件放回原位。希望(可能还有其他问题)。
- Dangling Versions: Your previous questions seems to indicate that you may have "dangling versions" on these systems. In order to deal with this I would honestly pull back all deployed software via SCCM and then deploy the newest version and finally the runtimes spoken about above.
部分链接:
- 加入这个旧的 "permission denied" 修复列表:System.UnauthorizedAccessException while running .exe under program files
- 我想提醒您,通过新机制简化 WiX 源文件的可能性 auto-generate 许多不需要指定的属性。请参阅:Simplifying WiX markup。我现在不会这样做,因为你还活着,但对于未来的包裹,你可以试试这个。