Wix: Using Patch Creation Properties - Small Update
Source Reference: wix help document -- WiX Toolset License
Using Patch Creation Properties
A patch contains the differences between one or more pairs of Windows Installer packages. The tool PatchWiz.dll in the Windows SDK compares pairs of packages and produces a patch using a file called a Patch Creation Properties (PCP) file.
It is recommended that you download the latest Windows SDK to get the newest tools for building patches.
Setting Up the Sample
A Patch Creation Properties (PCP) file instructs PatchWiz.dll to generate a patch from differences in one or more pairs of packages. A patch contains the differences between the target and upgrade packages, and will transform the target package to the upgrade package. Both the target and upgrade packages are created below.
Create a directory that will contain the sample
Create a directory from which you plan on running the sample. This will be the sample root.
md C:\sample
Create two subdirectories
Under the sample root create two subdirectories called "1.0" and "1.1".
md C:\sample\1.0
md C:\sample\1.1
Create a text file called Sample.txt for 1.0
Create a text file in the "1.0" directory called Sample.txt and put some text in it telling you that it is the 1.0 version of the file.
echo This is version 1.0 > C:\sample\1.0\Sample.txt
Create a text file called Sample.txt for 1.1
Create a text file in the "1.1" directory called Sample.txt and put some text in it telling you that it is the 1.1 version of the file.
echo This is version 1.1 > C:\sample\1.1\Sample.txt
Create your product authoring in the sample root folder
Create your product authoring in the sample root folder called Product.wxs with the following contents:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="48C49ACE-90CF-4161-9C6E-9162115A54DD"
Name="WiX Patch Example Product"
Language="1033"
Version="1.0.0"
Manufacturer="Dynamo Corporation"
UpgradeCode="48C49ACE-90CF-4161-9C6E-9162115A54DD">
<Package Description="Installs a file that will be patched."
Comments="This Product does not install any executables"
InstallerVersion="200"
Compressed="yes" />
<Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
<FeatureRef Id="SampleProductFeature"/>
</Product>
<Fragment>
<Feature Id="SampleProductFeature" Title="Sample Product Feature" Level="1">
<ComponentRef Id="SampleComponent" />
</Feature>
</Fragment>
<Fragment>
<DirectoryRef Id="SampleProductFolder">
<Component Id="SampleComponent" Guid="{C28843DA-EF08-41CC-BA75-D2B99D8A1983}" DiskId="1">
<File Id="SampleFile" Name="Sample.txt" Source=".\$(var.Version)\Sample.txt" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="SampleProductFolder" Name="Patch Sample Directory">
</Directory>
</Directory>
</Directory>
</Fragment>
</Wix>
Create your patch authoring in the sample root
Create your Patch Creation Properties (PCP) authoring in the sample root called Patch.wxs with the following content:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<PatchCreation
Id="224C316C-5894-4771-BABF-21A3AC1F75FF"
CleanWorkingFolder="yes"
OutputPath="patch.pcp"
WholeFilesOnly="yes"
>
<PatchInformation
Description="Small Update Patch"
Comments="Small Update Patch"
ShortNames="no"
Languages="1033"
Compressed="yes"
Manufacturer="Dynamo Corp"/>
<PatchMetadata
AllowRemoval="yes"
Description="Small Update Patch"
ManufacturerName="Dynamo Corp"
TargetProductName="Sample"
MoreInfoURL="http://www.dynamocorp.com/"
Classification="Update"
DisplayName="Sample Patch"/>
<Family DiskId="5000"
MediaSrcProp="Sample"
Name="Sample"
SequenceStart="5000">
<UpgradeImage SourceFile="C:\sample\1.1\admin\product.msi" Id="SampleUpgrade">
<TargetImage SourceFile="C:\sample\1.0\admin\product.msi" Order="2"
Id="SampleTarget" IgnoreMissingFiles="no" />
</UpgradeImage>
</Family>
<PatchSequence PatchFamily="SamplePatchFamily"
Sequence="1.0.0.0"
Supersede="yes" />
</PatchCreation>
</Wix>
Note that SequenceStart must be greater than the last sequence in the File table in the target package or the patch will not install.
Build the Target and Upgrade Packages
Open a command prompt and make sure the following WiX and Windows Installer SDK tools are in your PATH.
- Candle.exe
- Light.exe
- MsiMsp.exe
- PatchWiz.dll
- MSPatchC.dll
- MakeCab.exe
Build the target package
candle.exe -dVersion=1.0 product.wxs
light.exe product.wixobj -out 1.0\product.msi
Perform an administrative installation of the target package
Msiexec.exe is used to perform an administrative installation but nothing is actually registered on your system. It is mainly file extraction.
msiexec.exe /a 1.0\product.msi /qb TARGETDIR=C:\sample\1.0\admin
Build the upgrade package
candle.exe -dVersion=1.1 product.wxs
light.exe product.wixobj -out 1.1\product.msi
Perform an administrative installation of the upgrade package
msiexec.exe /a 1.1\product.msi /qb TARGETDIR=C:\sample\1.1\admin
Build the Patch
The Patch.wxs file is compiled into a PCP file that is then processed by MsiMsp.exe to product the patch package.
candle.exe patch.wxs
light.exe patch.wixobj -out patch\1.1\patch.pcp
msimsp.exe -s patch\patch.pcp -p patch\1.1\patch.msp -l patch.log
Verify the Patch
To verify that the patch works, install the product and then the patch.
Install the 1.0 product
msiexec.exe /i 1.0\product.msi /l*vx install.log
Verify version 1.0
Go to "Program Files\Patch Sample Directory" and open Sample.txt. Verify that this is the 1.0 version. Close Sample.txt.
Install the patch
msiexec.exe /p patch\patch.msp /l*vx patch.log
Verify version 1.1
Go to "Program Files\Patch Sample Directory" and open Sample.txt. Verify that this is now the 1.1 version. Close Sample.txt.
Uninstall the patch
On Windows XP Service Pack 2 and Windows Server 2003, go to "Add/Remove Programs" in the Control Panel and make sure that Show Updates is checked. On Windows Vista and newer, go to "Programs" then "View installed updates" in the Control panel. Select "Sample Patch" from under "WiX Patch Example Product" and click the Uninstall button.
Go to "Program files\Patch Sample Directory" and open Sample.txt. Verify that this is again the 1.0 version. Close Sample.txt.
Uninstall the product
On Windows XP Service Pack 2 and Windows Server 2003, go to "Add/Remove Programs" in the Control Panel. On Windows Vista and newer, go to "Programs" then "Uninstall a program" in the Control Panel. Select "WiX Patch Example Product" and click the Uninstall button.
Restrictions
Please review restrictions on how patches must be built to avoid problem during patch installation.
Wix: Using Patch Creation Properties - Small Update的更多相关文章
- Wix: Using Patch Creation Properties - Minor Update
Based on the project created in Wix: Using Patch Creation Properties - Small Update, Following chang ...
- From MSI to WiX, Part 1 - Required properties, by Alex Shevchuk
Following content is directly reprinted from From MSI to WiX, Part 1 - Required properties Author: A ...
- WIX 安装部署教程(六) 为你收集的七个知识点
前段时间整理5篇WIX(Windows Installer XML)的安装教程,但还不够完善,这里继续整理了七个知识点分享给大家.WIX最新版本3.8,点击下载 WIX安装部署(一)同MSBuild自 ...
- Wix打包系列 (六)制作升级和补丁包
原文:Wix打包系列 (六)制作升级和补丁包 前面我们已经知道怎么制作一个完整安装包了,但我们的软件往往不能一次性就满足客户的需要,当客户需要我们给软件进行升级的时候,我们应该怎么做呢? 在这之前,我 ...
- Windows 7: Update is not applicable to your computer
https://www.sevenforums.com/windows-updates-activation/119088-update-not-applicable-your-computer.ht ...
- REST API设计指导——译自Microsoft REST API Guidelines(四)
前言 前面我们说了,如果API的设计更规范更合理,在很大程度上能够提高联调的效率,降低沟通成本.那么什么是好的API设计?这里我们不得不提到REST API. 关于REST API的书籍很多,但是完整 ...
- Known BREAKING CHANGES from NH3.3.3.GA to 4.0.0
Build 4.0.0.Alpha1 ============================= ** Known BREAKING CHANGES from NH3.3.3.GA to 4.0. ...
- Deploying JRE (Native Plug-in) for Windows Clients in Oracle E-Business Suite Release 12 (文档 ID 393931.1)
In This Document Section 1: Overview Section 2: Pre-Upgrade Steps Section 3: Upgrade and Configurati ...
- Ehcache(2.9.x) - API Developer Guide, Write-Through and Write-Behind Caches
About Write-Through and Write-Behind Caches Write-through caching is a caching pattern where writes ...
随机推荐
- win32多线程学习总结:同步机制critical sections
Critical sections是win32中最容易使用的同步机制,用来处理一份共享资源,共享资源指的是每次只能够被一个线程处理的资源,包括内存.数据结构.文件等. 优点: 1.使用便捷,即声明即使 ...
- systemd service
Man page systemd.unit SYSTEMD.UNIT(5) systemd.unit SYSTEMD.UNIT(5) NAME systemd.unit - Unit configur ...
- 【39】明智而审慎第使用private继承
1.private继承意味着,根据某物实现出,继承父类的实现,关闭父类的接口,并不是Is-A的关系,不满足里氏代换,继承的内容访问权限都修改为private. 2.那么问题来了,复合也表达根据某物实现 ...
- VS2012的SVN插件VISUALSVN
http://www.visualsvn.com/visualsvn/download/
- 通过IP控制登录系统
项目中有这么一个需求,就是系统仅仅能在指定ip下登录,能够理解为内部系统,仅仅能够在公司訪问 我的代码是这样写的:入不入流不知道,但能解决这个问题. 获得訪问IP代码: String ip = req ...
- 【linux c learn 之stat】获取文件的属性
NAME stat 获取文件属性 这个函数位于<sys/stat.h>头文件里 函数原型: int stat(const char *path, struct stat *buf); 參数 ...
- C#获取指定网页源码的几种方法
// WebClient private string GetWebClient(string url) { string strHTML = ""; WebClient myWe ...
- Java设计模式07:常用设计模式之装饰器模式(结构型模式)
1. Java之装饰器模式(Decorator Pattern) (1)概述: 装饰模式在Java种使用也很广泛,比如我们在重新定义按钮.对话框等时候,实际上已经在使用装饰模式了.在不必改变原 ...
- 利用dijkstra算法规划线路
# dijkstra# 1.在数据库内预先存放了北京市内最新的道路节点,选用优化了得dijkstra算法进行线路规划. 当输入起点和终点后,会计算出最短的路径.同时还能选择查看路径经过的道路节点 ...
- Fortify 4.0 帮助文档下载
Fortify 4.0 帮助文档下载 http://pan.baidu.com/s/1hqzbF8o