Пользовательское действие Wix не выполняется с использованием программы «Добавить / Удалить», но выполняется с запуском MSI и выбором «Удалить». - PullRequest
0 голосов
/ 04 июня 2018

Мое пользовательское действие WIX должно удалять задание SQL при удалении продукта.Это прекрасно работает, если выполняется MSI и выбрано REMOVE.

Однако, кажется, что он никогда не запускается, если продукт был удален с помощью программы «Установка и удаление».

Вот мой InstallExecuteSequence section

<Custom Action="CleanupServer_Set" Before="CleanupServer"><![CDATA[NOT UPGRADINGPRODUCTCODE AND (REMOVE="ALL")]]></Custom>
<Custom Action="CleanupServer" Before="RemoveFiles"><![CDATA[NOT UPGRADINGPRODUCTCODE AND (REMOVE="ALL")]]></Custom>

И это мое определение пользовательского действия

 <CustomAction Id="CleanupServer_Set" Property="CleanupServer" Value="SERVER=[SERVER];DBFILES=[DBFILES]" Execute="immediate"/>      
 <CustomAction Id="CleanupServer" BinaryKey="CA" DllEntry="CleanupServer" Execute="deferred" Return="ignore" Impersonate="no"/> 

Любая помощь будет принята с благодарностью.Поскольку я запускаю удаление через панель управления, у меня нет файла журнала отладки, чтобы посмотреть, что происходит.

1 Ответ

0 голосов
/ 04 июня 2018

ОБНОВЛЕНИЕ : In Add / Remove Programs.Возможно, попробуйте Modify вместо Remove - если доступно.Это запустит удаление в режиме графического интерфейса, а не в режиме без вывода сообщений, который используется при выборе Remove.

Олицетворение : В режиме без вывода сообщений свойства, от которых вы зависите, могут быть не установлены (если они обычно задаются в графическом интерфейсе пользователя) или вы не можете подключиться к базе данных, поскольку msiexec.exe (механизм установщика Windows) работает в системе контекст .Я полагаю, что один или оба из этих вопросов являются, по крайней мере, частью вашей проблемы.Это удаленная база данных?

  1. Возможно, сначала попробуйте установить Impersonate в yes, например так (не запускайте в системном контексте, олицетворяйте запускающего пользователя):

    <CustomAction Id="CleanupServer" BinaryKey="CA" DllEntry="CleanupServer"
                  Execute="deferred" Return="ignore" Impersonate="yes" /> 
    
  2. В качестве альтернативы, возможно, попробуйте запустить его без отложенного (немедленного и невыполненного) и, возможно, настроить его запуск только один раз:

    <CustomAction Id="CleanupServer" BinaryKey="CA" DllEntry="CleanupServer" 
                  Execute="firstSequence" Return="ignore" /> 
    

Просто предложения, чтобы попробовать, я не проверял.


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

[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer]
"Logging"="voicewarmup"
"Debug"=dword:00000007

Предлагаемые действия :

  1. Добавьте соответствующие значения реестра, как описано выше (Debug и Logging)
  2. Запустите установку, а затем удаление из ARP
  3. Найдите файл журнала - с помощьюпроизвольное имя - в папке% TEMP%
    • ключ Windows + нажмите R , введите %TEMP% и нажмите , введите
    • Сортировка по дате и времени изменения.Ваш файл должен отображаться сверху
  4. Давайте посмотрим журнал.Загрузить в Github, Dropbox, GDisk или куда-либо еще.

Также есть раздел о том, как интерпретировать файлы журналов - на случай, если вы захотите сначала посмотреть сами.По сути, ищите имена пользовательских действий, соответствующие значения свойств и просматривайте непосредственное «окружение» найденных вами записей.Ведение журнала действительно многословно, но полезно.


Сохранять / читать обратно Значения свойств : Вот ответ, показывающий сохранение свойств и как выможете прочитать их обратно с помощью AppSearch .Не забывайте проверять такие функции во всех режимах установки (install, uninstall, modify, remove, major upgrade, silent and interactively - обычно есть сюрпризы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...