【问题标题】:Wix ToolSet Patch Creation Using "Patch Creation Properties"使用“补丁创建属性”创建 Wix ToolSet 补丁
【发布时间】:2015-06-25 13:32:27
【问题描述】:

首先,我想重申一下,在安装程序和补丁方面,我是一个完全的菜鸟,并且一直以来自 interwebz 的文章为生。

背景简介:我们创建了一个“安装”Web 应用程序的安装程序 - 创建 IIS 服务、数据库等。对于后续版本,我们计划使用补丁进行次要升级。我们为此应用程序使用 .NET C#。

我一直在尝试使用 wix 网站上的“补丁创建属性”教程为项目创建补丁:http://wixtoolset.org/documentation/manual/v3/patching/patch_building.html

我设法创建了一个补丁,它确实有效,但我注意到它只更改了 html、js 和 css 文件,以及 web 配置。我对 .cs 文件所做的任何更改都没有反映出来。我假设 DLL 文件没有被补丁替换。

下面是我对 patch.wxs 的配置:

<PatchCreation
      Id="{real guid heere}"
      CleanWorkingFolder="yes"
      OutputPath="C:\Outputpath\patch.pcp"
      WholeFilesOnly="yes" >

    <PatchInformation
        Description="Project 3.0.10 Patch"
        Manufacturer="project"/>

    <PatchMetadata
        AllowRemoval="yes"
        Description=" Patch v3.0.10"
        ManufacturerName="ManufacturerName"
        TargetProductName="TargetProductName"
        MoreInfoURL="www.google.com"
        Classification="Update"
        DisplayName="ManufacturerNamePatch"
        MinorUpdateTargetRTM="1"/>

    <Family DiskId="5000"
        MediaSrcProp="Patch"
        Name="patchtest">
      <UpgradeImage SourceFile="C:\output\test\new\admin\Setup.msi"
                    Id="UpgradeImage">
        <TargetImage SourceFile="C:\output\test\old\admin\Setup.msi"
                     Order="2"
                     Id="TargetImage"
                     IgnoreMissingFiles="no" />
      </UpgradeImage>
    </Family>

    <PatchSequence PatchFamily="SCMPatchFamily"
        Supersede="yes" />

  </PatchCreation>

我用日志安装了补丁,并注意到了这一点:

MSI (s) (18:F0) [17:37:18:316]:文件:C:\Location\Website.Web.dll;不会覆盖;不会打补丁;现有文件的版本相同

我一直在网上寻找答案,但没有找到解决方法。

非常感谢。

【问题讨论】:

    标签: c# wix installation patch windows-installer


    【解决方案1】:

    线索在消息中!服务包、补丁、修补程序都依赖于根据文件版本更新二进制文件。这不仅通过不安装不需要更改的文件来加快速度,而且确保您不会用旧版本覆盖更高版本。创建日期(如由于我的文件较新而应替换文件的想法)不适用。文件版本对于识别客户端是否具有最新版本也很有用。所以增加文件版本,如果它是托管代码,您不需要更改 AssemblyVersion,只需为实际已更改的文件添加一个 AssemblyFileVersion,在现有安装版本之上递增。

    https://msdn.microsoft.com/en-us/library/aa367835(v=vs.85).aspx

    【讨论】:

    • 非常感谢先生。我尝试将 upgradeimage msi 的 AssemblyVersion 更改为使用 .NET 的自动增量:[assembly: AssemblyVersion("1.0.*")],并且在重新创建补丁后它对我有用。我还不确定这是否是一种好习惯,我一直在看到一堆文章说我不应该使用这种自动增量功能,但它现在对我有用,所以寻找替代方法是一项工作改天 :) 非常感谢您帮助像我这样的菜鸟,好先生。
    猜你喜欢
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多