От MSI к WiX, часть 2 – Поддержка "Установка и удаление программ"


Главная страница серии здесь.


English version of this page is here.


 



Добавление поддержки для “Установка и удаление программ”


Группа свойств, хранящихся в таблице Property, хранит информацию, которую операционная система отображает в панели управления “Установка и удаление программ” (ARP).   


Вот список свойств, относящихся к ARP:



Некоторые свойства ARP влияют на то, какие операции с установленной программой будут доступны пользователю:



Установка свойства ARPSYSTEMCOMPONENT в 1 (на самом деле, просто присутствие этого свойства в таблице Property с не важно каким значением) сделает программу невидимой в Add/Remove Programs.


Установка свойства ARPNOREMOVE в 1 спрячет или запретит (disable) (на Windows 2000 и Windows XP) кнопку Удалить (Remove) в Add/Remove Programs.


Установка свойства ARPNOMODIFY в 1 запретит (disable) кнопку Изменить/Modify (Change на Windows 2000) в Add/Remove Programs.


Установка свойства ARPNOREPAIR в 1 запретит (disable) кнопку Починить/Repair в Add/Remove Programs.


Всё относящееся к ARP мы поместим в отдельный файл ControlPanel.wxi.  Вот содержимое этого файла:


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


Как Вы уже увидели, для того чтобы присвоить значение свойству, в большинстве случаев достаточно простого объявления элемента <Property> с атрибутом Id установленным в имя свойства и атрибутом Value – в его значение.


Ситуация немного сложнее когда мы задаём иконку для программы.  Нам надо добавить элемент <Icon> и гарантировать, что значение атрибута Id элемента <Icon> имеет то же значение, что и атрибут Value элемента <Property> с атрибутом Id равным ARPPRODUCTICON.  Атрибут SourceFile элемента <Icon> должен указывать на файл иконки.


Ещё более сложнее присвоить значение свойству ARPINSTALLLOCATION.  Поскольку директория, где будет установлена программа, может быть изменена пользователем либо через пользовательский интерфейс, либо через командную строку, мы будем знать эту директорию только после того, как она будет утверждена (validated) инсталлятором (более подробно мы будем говорить об этом при обсуждении стандартных и пользовательских комманд (standard and custom actions)).  Для того, чтобы присвоить значение свойству ARPINSTALLLOCATION нам надо добавить запись в таблицу CustomAction с пользовательской коммандой, которая присвоит свойству ARPINSTALLLOCATION значение свойства INSTALLDIR.  Также, необходимо присвоить такой приоритет пользоательской команде, чтобы она исполнялась после стандартной команды InstallValidate.


Это исправленный файл Minimal.wxs:


<?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=Component1Guid={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>


Установите программу и посмотрите на её свойства в ARP.



Что следующее


В следующий раз мы рассмотрим Поиск программ (application search) и Условия запуска инсталляции (launch conditions).

Comments (1)

  1. Всеволод says:

    Интересный пост, спасибо вам. Интересует только  вопрос – будет ли продолжение? 🙂