【问题标题】:Windows Installer Error 1316. Installer looks for wrong filenameWindows 安装程序错误 1316。安装程序查找错误的文件名
【发布时间】:2014-02-24 08:29:49
【问题描述】:

我正在尝试为我的应用程序实现以下自我更新机制:如果有可用更新,我的应用程序会下载(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 Installer 出于某种原因正在寻找CCWirelessServer.msi 文件,而不是正确的临时文件名。您可以在下面的日志中看到这一点。

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

这是日志:

=== 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:\ProgramData\MyCompanyName\Wireless Server\Updates\CCWirelessServer.msi

Error 1316. A network error occurred while attempting to read from the file: C:\ProgramData\MyCompanyName\Wireless Server\Updates\CCWirelessServer.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:

只是为了验证问题出在任意文件名上,我尝试使用安装程序的原始文件名编写更新包,它可以工作!

【问题讨论】:

    标签: wix windows-installer auto-update


    【解决方案1】:

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

    Windows Installer Best Practices

    保持包名称和包代码一致。

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

    •为您的 .msi 文件指定一个用户友好的名称,使用户能够 识别 Windows Installer 程序包的内容。

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

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

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

    Changing the Product Code

    如果满足以下任何一项,则必须更改产品代码 更新:

    •原始产品和更新产品的共存安装 必须可以使用相同的系统。

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

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

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

    •现有功能已成为现有功能的子项 功能。

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

    Why does changing the name of your MSI file require a Major Upgrade?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2011-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      相关资源
      最近更新 更多