Following content is directly reprinted from From MSI to WiX, Part 2 - ARP support

Author: Alex Shevchuk

Adding Add/Remove Program (ARP) support

Subset of properties stored in the Property table defines the information operating system will show in Add/Remove Program Control Panel applet for the installed application.

Here is the list of ARP-related properties:

Some ARP properties will change the way how application can be updated:

Setting the ARPSYSTEMCOMPONENT property to 1 (actually, just having it in the Property table with any value) will hide the application from Add/Remove Programs.

Setting the ARPNOREMOVE property to 1 will hide or disable (on Windows 2000 and Windows XP) the Remove button in Add/Remove Programs.

Setting the ARPNOMODIFY property to 1 will disable the Modify (Change on Windows 2000) button in Add/Remove Programs.

Setting the ARPNOREPAIR property to 1 will disable the Repair button in Add/Remove Programs.

Because I don't want to clutter my main project file, I decided to put all ARP-related information in the separate include file (ControlPanel.wxi).  Here is the content of this file:

<Include>
<Property Id="ARPCOMMENTS" Value="Acme Corporation Comments" />
<Property Id="ARPCONTACT" Value="Put your name in here" />
<Property Id="ARPPRODUCTICON" Value="MainIcon.ico" />
<Property Id="ARPHELPLINK" Value="Your help link" />
<Property Id="ARPREADME" Value="Your README link" />
<Property Id="ARPURLINFOABOUT" Value="Your &apos;About&apos; information" />
<Property Id="ARPURLUPDATEINFO" Value="Your &apos;Update&apos; URL" />
<Property Id="ARPHELPTELEPHONE" Value="URL where users can find your support phone number" />
<Property Id="ARPAUTHORIZEDCDFPREFIX" Value="URL of the update channel for the application" />
<Property Id="ARPSIZE" Value="3" /> <!--
<Property Id="ARPNOMODIFY" Value="0" />
<Property Id="ARPNOREPAIR" Value="0" />
<Property Id="ARPNOREMOVE" Value="0" />
<Property Id="ARPSYSTEMCOMPONENT" Value="0" />
--> <Icon Id="MainIcon.ico" SourceFile="MainIcon.ico" /> <!-- Set up ARPINSTALLLOCATION property -->
<CustomAction Id="SetARPINSTALLLOCATION" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" /> <!-- Sequences -->
<InstallExecuteSequence>
<Custom Action="SetARPINSTALLLOCATION" After="InstallValidate"></Custom>
</InstallExecuteSequence>
</Include>

As you can see, in many cases, setting the value of the property is just simple declaration of the <Property> element, where Id attribute is set to the name of the property in the Property table and the Value attribute defines its value.

Situation is slightly more complicated when we set the product icon.  We need to add the <Icon> element and make sure that Id attribute of the <Icon> element has the same value as the Value attribute of the <Property> element with the Id attribute of ARPPRODUCTICON.  SourceFile attribute of the <Icon> element points to an actual icon file.

Even more complicated is setting the value of ARPINSTALLLOCATION property.  Because installation directory can be changed by the user either through user interface or command line, we can be sure about it only after installation path will be validated by the installer (more details about this process when we will talk about standard and custom actions).  To set the value of ARPINSTALLLOCATION property we need to create a record in the CustomAction table with the custom action which will set the value of ARPINSTALLLOCATION property to the value of INSTALLDIR property.  We also need to schedule this custom action to run after the standard InstallValidate action.

Here is the updated Minimal.wxs file:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi"> <Product Id="{1EFFDCD2-4B4B-439E-8296-651795EE02D9}"
Name="Minimal Windows Installer Sample"
Language="1033"
Codepage="1252"
Version="1.0.0"
Manufacturer="Acme Corporation"
UpgradeCode="{15F9543C-1C8D-45D6-B587-86E65F914F20}"> <Package Id="{909A6CE7-2739-4522-92C2-03AD7D7EE4CD}"
Description="Minimal Windows Installer Sample"
Comments="This installer database contains the logic and data required to install Minimal Windows Installer Sample."
InstallerVersion="200"
Languages="1033"
SummaryCodepage="1252"
Platforms="Intel"
ReadOnly="no"
Compressed="yes"
AdminImage="no"
Keywords="Installer"
ShortNames ="no"
Manufacturer="Acme Corporation" /> <?include ControlPanel.wxi ?> <Media Id="1" /> <Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="Minimal" LongName="MinimalInstallation"> <Component Id="Component1" Guid="{A77C5B06-132D-4884-8E17-EA10A83C812D}">
<CreateFolder />
</Component> </Directory>
</Directory>
</Directory> <Feature Id="Feature1"
Title="Feature1 title"
Description="Feature1 description"
Level="1"
ConfigurableDirectory="INSTALLDIR" > <ComponentRef Id="Component1" /> </Feature>
</Product>
</Wix>

Install it and take a look at the ARP properties for our package.

Whats next

Next time we'll take a look at the application search and launch conditions.

From MSI to WiX, Part 2 - ARP support, by Alex Shevchuk的更多相关文章

  1. 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 ...

  2. From MSI to WiX, Part 8 - Major Upgrade, by Alex Shevchuk

    Following content is reprinted from here, please go to the original website for more information. Au ...

  3. From MSI to WiX, Part 4 - Features and Components by Alex Shevchuk

    Following content is directly reprinted from : http://blogs.technet.com/b/alexshev/archive/2008/08/2 ...

  4. WIX Custom Action (immediate, deffered, rollback)

    Following content is directly reprinted from From MSI to WiX, Part 19 - The Art of Custom Action, Pa ...

  5. 【转】busybox分析——arp设置ARP缓存表中的mac地址

    [转]busybox分析——arp设置ARP缓存表中的mac地址 转自:http://blog.chinaunix.net/uid-26009923-id-5098083.html 1. 将arp缓存 ...

  6. Toad for Oracle 12.1下载地址

    32 位版: http://us-downloads.quest.com/Repository/support.quest.com/Toad for Oracle/12.1/Software/Toad ...

  7. Event filter with query "SELECT * FROM __InstanceModi

    Event filter with query "SELECT * FROM __InstanceModi     问题描述: Details -Event filter with quer ...

  8. Windows Server 2008 R2 报错事件ID:10之WMI报错

    问题描述: Details -Event filter with query "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHE ...

  9. Win7系统出现提示: “Windows已遇到关键问题,将在一分钟后自动重新启动。”

    1. 若用户在使用Win7系统时,遇到上述系统故障,建议重启电脑.等电脑开机自检一过,马上按键盘上的F8键,选择进入安全模式.在安全模式下,进行系统还原.其他的解决方法见下. 1.或者,在安全模式下, ...

随机推荐

  1. 将java源码打成jar包

    方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] ...

  2. 实时Bug检测工具Bugsnag发布API更新

    原文地址: http://www.uml.org.cn/itnews/2013082609.asp 在应用开发过程中,开发者常常会碰到一个非常头疼的问题,就是应用崩溃.而Bugsnag可以很好地解决这 ...

  3. cocos2d-x中,简单html富文本显示

    作者:HU 转载请注明,原文链接:http://www.cnblogs.com/xioapingguo/p/4037414.html  虽然自从cocos2d-x更新到3.0后,使用freetype, ...

  4. [ACM] 最短路算法整理(bellman_ford , SPFA , floyed , dijkstra 思想,步骤及模板)

    以杭电2544题目为例 最短路 Problem Description 在每年的校赛里,全部进入决赛的同学都会获得一件非常美丽的t-shirt. 可是每当我们的工作人员把上百件的衣服从商店运回到赛场的 ...

  5. Starling性能优化技巧十五则

    Starling的性能优化要点 一.尽可能减少状态变更 如您所知,Starling使用Stage3D来渲染所有的可见对象.这就意味着所有的绘制都是GPU完成的. 现在,Starling可以一个接一个的 ...

  6. github fork项目后,代码更新

    协助约定 每个人都可以fork一份自己的repo,所有的修改都在自己私有的repo上进行:修改完成,测试通过后通过给主repo发pull request请求合并:主repo(Johnqing/n.js ...

  7. 使用日志服务LogHub替换Kafka

    https://yq.aliyun.com/articles/35979#index_section

  8. Jordan Lecture Note-6: The Solutions of Nonlinear Equation.

    The Solutions of Nonlinear Equation 本文主要介绍几种用于解非线性方程$f(x)=0$的一些方法. (1) Bisection Method. 算法: step 1: ...

  9. 将项目添加到Finder侧边栏和工具栏

    转: http://www.cnblogs.com/wormday/archive/2011/05/08/2039468.html 1.在侧边栏和工具栏右键,有相应的设置选项 2.可以将项目拖到侧边栏 ...

  10. cxf

    一,cxf webService入门案例 1,jar包 注意版本 使用jdk6和apache-cxf-3.1.2,但cxf-3.1.2已经不支持jdk6,需要jdk7以上 版本用错会报java.lan ...