Вопросы, замечания, предложения

Coordinator
Jul 5, 2011 at 7:14 PM

Любые вопросы, касающиеся Windows Installer XML и этой книги.

Feb 13, 2013 at 9:50 AM
отличная идея и книга.
Вы продолжаете работу над ней?
Coordinator
Feb 13, 2013 at 10:15 AM
Спасибо. Да, продолжаю. Готовлю версию под WiX 3.7, VS 2012 и с Burn.
Jul 16, 2014 at 10:57 AM
Здравствуйте! Помогите, пожалуйста, разобраться с контролами типа Edit (<Control Id="myEdit1" Type="Edit" Property="REMOTE_PORT" Height="17" Width="150" X="56" Y="58" Sunken="yes">). Нигде не могу найти описание, как считать то, что ввел пользователь в это поле (например Порт) и как потом это значение использовать при установке вместо значения по умолчанию, которое прописано в конфиге.
Coordinator
Jul 16, 2014 at 11:07 AM
Добрый день. Глава 6, раздел "Создание операции и добавление в последовательность". Создаете свою библиотеку, добавляете метод, формирующий новое значение на основе определенного вами открытого свойства (REMOTE_PORT) и помещающий его в выходное открытое свойство. Далее в свой файл конфигурации добавляете элемент <util:XmlFile />, который умеет писать значения.
Coordinator
Jul 16, 2014 at 11:11 AM
Приблизительно так будет выглядеть код:
    [CustomAction]
    public static ActionResult SetAddress(Session session)
    {
        string remotePort = session["REMOTE_PORT"];
        session["BLABLA"] = remotePort + "что-нибудь";
        return ActionResult.Success;
    }
А так содержимое wxs-файла:
  <Component Id="TestExeConfig" Guid="{59BBA591-2383-42fc-BDBD-????????}">
    <File Id="Test.exe.config" Name="Test.exe.config" Source="$(var.Test.TargetDir)" />
    <!-- Установка адресов -->
    <util:XmlFile Id="XmlSettingsSetString5" File="[INSTALLLOCATION]Test.exe.config" Action="setValue" ElementPath="//configuration/system.serviceModel/client/endpoint[\[]@name='TestService'[\]]/@address" Value="[BLABLA]" />
  </Component>
Jul 16, 2014 at 1:08 PM
Спасибо большое, буду дальше разбираться.
Jul 29, 2014 at 7:18 AM
Поясните, пожалуйста: если мне нужно выпускать обновления для программы и необходимо, чтобы 2, 3 и т.д. версии этой программы можно было устанавливать без наличия на компьютере предыдущих версий, то мне нужно использовать major upgrade? Minor не подойдет?
И еще: как реализовать такую проверку, если установлена 1 версия программы, то мы выполняем одно действие, а если установлена 3 версия программы, то выполняем совсем другое. Помогите, пожалуйста
Coordinator
Jul 31, 2014 at 8:34 AM
  1. Любая версия по умолчанию может быть установлена на пустую машину.
  2. Используйте синтаксис вида:

    <MajorUpgrade DowngradeErrorMessage="Уже установлена более новая версия продукта" Schedule="afterInstallInitialize"/>
    <Upgrade Id="21A239F0-6A32-4B87-85E3-????????">
    <UpgradeVersion OnlyDetect="no" Minimum="1.0.0" IncludeMinimum="yes" Maximum="1.2.37" IncludeMaximum="no" Property="PREV_VERSION" />
    </Upgrade>
где Upgrade.Id == Product.UpgradeCode. Для приведенного выше примера: если установлена версия продукта [1.0.0;1.2.37), будет инициализировано свойство PREV_VERSION. Используя это свойство (инициализировано/не инициализировано), можно управлять логикой выполнения.