Wix ToolSet补丁创建使用"补丁创建属性"

时间:2015-06-25 13:32:28

标签: c# wix installer patch msiexec

首先,我想重复一遍,我是一个关于安装程序和补丁的完整菜鸟,并且一直生活在interwebz的文章中。

快速背景:我们已经创建了一个安装程序"安装"一个Web应用程序 - 创建IIS服务,数据库等。对于后续版本,我们计划使用补丁进行次要升级。我们为这个应用程序使用.NET C#。

我一直在尝试使用" Patch Creation Properties"为项目创建补丁。来自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>

我使用log进行了补丁安装,并注意到了这一点:

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

我一直在寻找网络寻找答案,并且没有找到解决方法。

非常感谢你。

1 个答案:

答案 0 :(得分:2)

线索在信息中! Service Pack,修补程序,修补程序都依赖于基于文件版本更新二进制文件。这不仅可以通过不安装不需要更改的文件来加快速度,还可以确保您不会使用旧版本覆盖更高版本。创建日期(因为文件应该被替换,因为我的新版本更新)不适用。文件版本对于识别客户端是否具有最新版本也很有用。因此,增加文件版本,如果它的托管代码不需要更改AssemblyVersion,只需为实际已更改的文件添加AssemblyFileVersion,增加到现有已安装的版本之上。

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