zoukankan      html  css  js  c++  java
  • From MSI to WiX, Part 2

    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.

  • 相关阅读:
    麻省理工18年春软件构造课程阅读13“调试”
    麻省理工18年春软件构造课程阅读15“相等”
    麻省理工18年春软件构造课程阅读12“接口与枚举”
    麻省理工18年春软件构造课程阅读11“抽象函数与表示不变量”
    麻省理工18年春软件构造课程阅读10“抽象数据类型”
    麻省理工18年春软件构造课程阅读09“避免调试”
    麻省理工18年春软件构造课程阅读08“可变性与不变性”
    麻省理工18年春软件构造课程阅读07“设计规格说明”
    麻省理工18年春软件构造课程阅读06“规格说明”
    麻省理工18年春软件构造课程阅读05“版本控制”
  • 原文地址:https://www.cnblogs.com/cindy-hu-23/p/4600512.html
Copyright © 2011-2022 走看看