Windows安装程序错误1316.安装程序查找错误的文件名



我正在尝试为我的应用程序实现以下自我更新机制:如果有更新可用,我的应用软件会下载(WiX生成的)MSI包,并用任意名称将其写入其AppData文件夹。然后,应用程序通过调用来启动更新过程

msiexec /fvomus "<ArbitraryName>.msi" /qn /L "<ArbitraryName>.msi.log" REINSTALL=ALL REINSTALLMODE=vomus

这样,我得到一个错误1316,然后安装以错误状态1603终止。

MSI的原始文件名是CCWirelessServer.msi,但正如我之前所说,我的应用程序编写的安装程序包具有任意名称,例如ba17b82d-0ab8-4fc9-aea8-62830042d49f.msi。现在我注意到,Windows安装程序出于某种原因正在查找CCWirelessServer.msi文件,而不是正确的临时文件名。您可以在下面的日志中看到这一点。

为什么Windows安装程序没有使用我通过命令行提供的文件名?是我的命令行参数有问题还是安装程序包有问题?

这是日志:

=== Logging started: 24.02.2014  09:16:30 ===
Action start 09:16:30: INSTALL.
Action start 09:16:30: FindRelatedProducts.
Action ended 09:16:30: FindRelatedProducts. Return value 0.
Action start 09:16:30: ValidateProductID.
Action ended 09:16:30: ValidateProductID. Return value 1.
Action start 09:16:30: CostInitialize.
Action ended 09:16:30: CostInitialize. Return value 1.
Action start 09:16:30: FileCost.
Action ended 09:16:30: FileCost. Return value 1.
Action start 09:16:30: CostFinalize.
Action ended 09:16:30: CostFinalize. Return value 1.
Action start 09:16:30: MigrateFeatureStates.
Action ended 09:16:30: MigrateFeatureStates. Return value 0.
Action start 09:16:30: InstallValidate.
Action ended 09:16:30: InstallValidate. Return value 1.
Action start 09:16:30: RemoveExistingProducts.
Action ended 09:16:30: RemoveExistingProducts. Return value 0.
Action start 09:16:30: InstallInitialize.
Action ended 09:16:30: InstallInitialize. Return value 1.
Action start 09:16:30: ProcessComponents.
Action ended 09:16:30: ProcessComponents. Return value 1.
Action start 09:16:30: UnpublishFeatures.
Action ended 09:16:30: UnpublishFeatures. Return value 1.
Action start 09:16:30: RemoveRegistryValues.
Action ended 09:16:30: RemoveRegistryValues. Return value 1.
Action start 09:16:30: RemoveShortcuts.
Action ended 09:16:30: RemoveShortcuts. Return value 1.
Action start 09:16:30: CAUninstallAsService.
Action ended 09:16:30: CAUninstallAsService. Return value 1.
Action start 09:16:30: RemoveFiles.
Action ended 09:16:30: RemoveFiles. Return value 1.
Action start 09:16:30: InstallFiles.
Action ended 09:16:30: InstallFiles. Return value 1.
Action start 09:16:30: CAInstallAsServiceRollback.
Action ended 09:16:30: CAInstallAsServiceRollback. Return value 1.
Action start 09:16:30: CAInstallAsService.
Action ended 09:16:30: CAInstallAsService. Return value 1.
Action start 09:16:30: CreateShortcuts.
Action ended 09:16:30: CreateShortcuts. Return value 1.
Action start 09:16:30: WriteRegistryValues.
Action ended 09:16:30: WriteRegistryValues. Return value 1.
Action start 09:16:30: RegisterUser.
Action ended 09:16:30: RegisterUser. Return value 0.
Action start 09:16:30: RegisterProduct.
MSI (s) (4C:50) [09:16:30:406]: Product: Wireless Server -- Error 1316. A network error occurred while attempting to read from the file: C:ProgramDataMyCompanyNameWireless ServerUpdatesCCWirelessServer.msi
Error 1316. A network error occurred while attempting to read from the file: C:ProgramDataMyCompanyNameWireless ServerUpdatesCCWirelessServer.msi
Action ended 09:16:30: RegisterProduct. Return value 3.
Action ended 09:16:30: INSTALL. Return value 3.
MSI (s) (4C:50) [09:16:30:419]: Windows Installer reconfigured the product. Product Name: Wireless Server. Product Version: 1.0.0.0. Product Language: 1033. Manufacturer: MyCompanyName. Reconfiguration success or error status: 1603.
=== Logging stopped: 24.02.2014  09:16:30 ===

编辑1:

只是为了验证问题是由任意文件名引起的,我尝试用安装程序的原始文件名编写更新包,它确实有效!

不支持尝试更改MSI的文件名并执行小升级。参见:

Windows安装程序最佳实践

保持包名称和包代码的一致性

可以为.msi文件指定任何名称,以帮助用户识别包,但在不更改产品代码。

•为.msi文件提供一个用户友好的名称,使用户可以标识Windows安装程序包的内容。

•产品代码是应用程序的主要标识并且必须在对应用有关信息,请参阅ProductCode和更改产品密码更改应用程序.msi文件的名称被视为全面的改变,总是需要相应的改变产品代码以保持一致性。

•软件包代码是安装程序用于搜索并验证给定安装的正确软件包。任何两个不相同的.msi文件都不应该具有相同的包代码。如果在不更改程序包代码的情况下更改了程序包,则如果两个程序包仍然可以访问,安装程序可能不会使用较新的程序包安装程序。包装代码存储在修订号中摘要信息流的Summary属性。

•请注意,产品代码和包装代码GUID中的字母必须全部为大写字母。

更改产品代码

如果以下任何一项对于更新:

•在同样的系统必须是可能的。

•.msi文件的名称已更改。

•现有组件的组件代码已更改。

•从现有功能中删除组件。

•现有功能已成为现有功能的子功能特色

•现有的子功能已从其父功能中删除。

为什么更改MSI文件的名称需要进行重大升级?

相关内容

最新更新