InstallScript - перезаписать деинсталлятор по умолчанию? - PullRequest
0 голосов
/ 04 июня 2018

Наша компания использует Flexera InstallShield 2012 (я знаю, что она старая), и в настоящее время я создаю проект InstallScript.Все работает хорошо, сценарий делает именно то, что я хочу.

Однако, я в настоящее время нахожусь в рассоле.InstallScript имеет встроенную функцию OnUninstall, которая вызывается при запуске программы установки с флагом -uninstall.Я написал свой собственный скрипт удаления, чтобы удалить все, что я установил во время установки.

Но, очевидно, InstallScript (или установщик Windows) создает другой деинсталлятор, когда вы переходите к Programs and Functions -> Uninstall на панели управления Windows..

Есть ли способ манипулировать этим "деинсталлятором по умолчанию" с помощью InstallScript?

Если вам нужна дополнительная информация, пожалуйста, прокомментируйте, и я обновлю этот пост.

Спасибовы!

Ответы [ 2 ]

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

Если это Installscript MSI проект, то он имеет собственную Windows Installer деинсталляцию, неявно включенную в сам MSI.

Теоретически, в зависимости от того, как вы это сделали, тамдолжно быть немного, чтобы не нужно было реализовывать собственную логику удаления самостоятельно - если вы не делаете что-то очень необычное .

Все файлы и записи реестра, добавленные с компонентами MSI, должны быть удалены должным образом, если только другой MSIфайлы зарегистрировали их в использовании, или вы установили для компонента постоянный или для общего доступа к устаревшей программе установки ссылка на компонент путем обновления и учета количества использованных здесь:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\SharedDLLs

(это означает, что подсчет ссылок в старом стиле от устаревших установщиков будет соблюден - ресурс не удаляется, еслиУстаревший установщик имеет зарегистрированный файл).

Что вы делаете в своем Uninstall event handler?

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

Я вижу две опции, которые вы можете попробовать ...

  1. Как вы правильно упомянули, OnUninstall вызывается при запуске установки с параметром -uninst.Я подозреваю, что этот параметр отсутствует в записи реестра Windows.Пожалуйста, взгляните на ...

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{your_product_id}\UninstallString
    

    Ключ должен содержать строку для запуска установки в режиме удаления с параметром -uninst, чтобы в настройке был установлен обработчик OnUninstall.Если он не установлен, вам может потребоваться добавить его вручную во время первоначальной регистрации вашего продукта.

  2. Вы можете использовать OnEnd обработчик событий, который предназначен для очистки наконец установки и ударил бы все время.Внутри этого обработчика событий вы можете создавать специальные сценарии для удаления вашего продукта.Код может выглядеть как ...

    function OnEnd()
        // local variables
    begin
        if (!MAINTENANCE) then
            // initial setup; you may fix the Windows uninstall registry here (see point #1)
        else
            if ( nMaintTypeGlobal = REMOVEALL ) then
                // product removal
            endif;
        endif;
    end;
    
...