Свойство WiX не найдено в журнале удаления - PullRequest
0 голосов
/ 15 февраля 2019

Изменение свойства из пользовательского интерфейса исчезает из журнала удаления.

Если я устанавливаю свое приложение со значениями свойств по умолчанию, а затем запускаю удаление, свойство отображается в журнале удаления.

Если я изменяюЗначение свойства из пользовательского интерфейса при удалении не отображается в журнале.

По этой причине apppool и webapp остаются в IIS после удаления, что не соответствует значениям по умолчанию.

<Property Id="WEB_APP_NAME" Value="WebApp" Secure="yes" />

вот как выглядит свойство.

Здесь я добавляю значение из элемента управления пользовательского интерфейса

    <Control Id="PoolNameEdit"
             Type="Edit"
             X="100"
             Y="45"
             Width="160"
             Height="17"
             Property="WEB_APP_NAME"
             Text="{80}"
             Indirect="no" />

И вот какЯ использую его

<!-- Define the directory structure -->
  <Fragment>

    <!--Directory elemens hierarchy always starts with Id="TARGETDIR" Name="SourceDir"-->
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="WEB_APP_FOLDER_LOC" Name="WebInstaller">
        <Directory Id="WEBFOLDER" Name ="[WEB_APP_NAME]" />
      </Directory>
    </Directory>
  </Fragment>

  <Fragment>

    <!--Concatenate user input for folderpath-->
    <SetDirectory Id="WEBFOLDER"
                  Value="[WEB_APP_FOLDER_LOC][WEB_APP_NAME]"
                  Sequence="both" />

    <!--Create new folder-->
    <DirectoryRef Id="WEBFOLDER">
      <Component Id="cmp_WebDir"
                 Guid="{E0CE5051-1419-4997-949F-020BC814ECDA}"
                 KeyPath="yes">
        <CreateFolder />
      </Component>
    </DirectoryRef>

    <!--Components-->
    <ComponentGroup Id="ProductComponents" Directory="WEBFOLDER">

      <!--Client config-->
      <Component Id="cmpWebConfig"
                 Guid="{1C84DF1F-2EA4-46E6-8125-C6FD410AFED9}"
                 KeyPath="yes">
        <Condition>INCLUDECONFIGFILE="1"</Condition>
        <File Source="Configuration\Web.config" />
      </Component>

      <!--Application pool-->
      <Component Id="cmpAppPool"
                 Guid="{00D6ABB1-734F-4788-ADB8-12A30056C513}"
                 KeyPath="yes">

        <iis:WebAppPool Id="MyAppPool"
                        Name="[WEB_APP_NAME]"
                        ManagedRuntimeVersion="v4.0"
                        ManagedPipelineMode="integrated"
                        Identity="applicationPoolIdentity" />
      </Component>

      <!--Website-->
      <Component Id="cmpMyWebsite"
                 Guid="{ECD42015-C067-44F3-94D9-5E713BCB586D}"
                 KeyPath="yes">

        <iis:WebSite Id="website_MyWebsite"
                     Description="[WEB_APP_NAME]"
                     Directory="WEBFOLDER"
                     ConfigureIfExists="no">

          <iis:WebApplication Id="webapplication_MyWebsite"
                              Name="[WEB_APP_NAME]"
                              WebAppPool="MyAppPool" />

          <iis:WebAddress Id="webaddress_MyWebsite"
                          Port="[WEB_APP_PORT]" />
        </iis:WebSite>
      </Component>

Я ожидал бы после изменения WEB_APP_NAME в пользовательском интерфейсе, чтобы деинсталлятор мог найти его и таким образом удалить appool и webapp из IIS.

Property(S): VirtualMemory = 3353
Property(S): UpgradeCode = {A4F9CA9E-4135-4D6F-AF58-FADA49E265DA}
Property(S): ConfigureIIs7Exec = **********
Property(S): StartIIS7ConfigTransaction = **********
Property(S): RollbackIIS7ConfigTransaction = **********
Property(S): CommitIIS7ConfigTransaction = **********
Property(S): WriteIIS7ConfigChanges = **********
Property(S): NETFRAMEWORK45 = #461808
Property(S): WEBFOLDER= C:\inetpub\WebApp\
Property(S): WEB_APP_FOLDER_LOC = C:\inetpub\
Property(S): WEB_APP_NAME = WebApp
Property(S): WEB_APP_PORT = 8080
Property(S): WEB_APP_USERNAME = ******
Property(S): WEB_APP_DOMAIN_NAME = ******
Property(S): WEB_APP_SQLSERVER_NAME = ******
Property(S): INCLUDECONFIGFILE = 1

так выглядит журнал удаления по умолчанию, если я заменил WEB_APP_NAME на что-то другое, WEB_APP_NAME не будет найден в журнале удаления, где его можно увидеть выше?

Оцените любые идеи, которыеразрешите это!

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Примечание : Пожалуйста, не допускайте изменения свойств при удалении, по крайней мере.Я думаю, что вы должны принимать изменения только во время новой установки?Или серьезное обновление?В противном случае имя разрешенного каталога не совпадает с установленным (та же проблема, что у вас была изначально).

Сохранять свойства : вам необходимо сохранить соответствующие свойствакогда вы позволяете их отображать и изменять в графическом интерфейсе или через командную строку.В противном случае свойства будут пустыми, если они разрешены как имена каталогов или приложений - или независимо от того, для чего вы используете их в своих настройках.Сохранение свойств MSI не является встроенной функцией установщика Windows (автоматически сохраняются только несколько системных свойств).Как правило, анти-шаблон MSI, но это так.

Образец "Помните шаблон" : Для обычных свойств PUBLIC (свойства UPPERCASE) вы можете использовать Шаблон запоминания Роба Меншинга для сохранения и получения значений свойств для ремонта, изменения, удаления и других операций обслуживания.Здесь приведен небольшой образец шаблона сохранения этого свойства: WIX UI для нескольких целевых каталогов (помните, используется шаблон).

Режимы установки : Существует множество режимов установки, которые необходимо проверить при выполнении настройки: fresh install, repair, modify, self-repair, uninstall, major upgrade uninstall, patching, rollback, resume suspended (перезагрузка и другие причины) и т. Д. Я бы протестировал как минимум первые 6 типов - чтобы убедиться, что разрешение работает правильно.

0 голосов
/ 15 февраля 2019

Здесь важно понять, что установщик Windows не сохраняет значения свойств.Введенные пользователем значения (через пользовательский интерфейс или через аргументы командной строки) не будут доступны во время восстановления, обновления или удаления.Вы можете себе представить, что это будет доступно во время удаления, это простой вопрос, но именно так работает установщик Windows.Самый простой способ обойти это - прочитать свойство и записать его в реестр.Во время восстановления / удаления / обновления выполните RegistrySearch и используйте значение, основанное на том, что находится в реестре.

Относительно того, почему значение по умолчанию сохраняется при удалении, это потому, что начальное / значение по умолчанию добавляется в MSI * 1003.* Таблица свойств .И это же значение используется из таблицы свойств и при удалении.

...