NSIS. Проблема с использованием функций внутри собственного скрипта - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь создать пользовательскую страницу деинсталлятора с формой обратной связи. Я прочитал документацию (https://www.electron.build/configuration/nsis#NsisOptions -скрипт ) и сделал все с помощью макросов customUnInstall. Я нашел некоторые проблемы с той же проблемой, но она не решена (https://github.com/electron-userland/electron-builder/issues/3871). Проблема заключается в использовании функций.

При попытке построить возвращается ошибка: «предупреждение 6020: код сценария деинсталлятора найден, но WriteUninstaller никогда не использовался - деинсталлятор не будет создан. Ошибка: предупреждение рассматривается как ошибка»

Существует код скрипта, который я вставляю в скрипт customUnInstall с помощью! Insertmacro:

Function un.TestFunc
    MessageBox MB_OK "HELLO"
FunctionEnd
!macro testmacro
        Var /GLOBAL Dialog
        Var /GLOBAL CheckBox

    nsDialogs::Create 1018
    Pop $Dialog

    ${NSD_CreateCheckbox} 0 25u 100% 10u "&Checkbox 1"
    Pop $CheckBox
    ${NSD_OnClick} $CheckBox un.TestFunc

        nsDialogs::Show
!macroend

Для получения дополнительной информации, есть некоторые вещи о создании собственного установщика с использованием утилит для сборки электронов https://www.electron.build/configuration/nsis#NsisOptions -скрипт

Итак, что я делаю не так? Я был бы очень признателен, если бы вы могли мне помочь.

UPD: Вопрос № 2. Я нашел ответ о пользовательской странице установщика ( Добавить пользовательскую страницу / поле в настройку NSIS, созданную с помощью Electron-Builder ), но если я сделаю то же самое с разделом удаления, появится та же ошибка. Конечно, в пакете. json Я включаю uninstall.n sh вместо installer.n sh.

!include nsDialogs.nsh

XPStyle on

Var Dialog
Var Text

UninstPage custom un.myCustomPage

Function un.myCustomPage

    nsDialogs::Create 1018
    Pop $Dialog

    ${If} $Dialog == error
        Abort
    ${EndIf}


    ${NSD_CreateLabel} 0 15 100% 20u "We are looking forward your return!"
    Pop $Text

    nsDialogs::Show

FunctionEnd



Section
SectionEnd

1 Ответ

0 голосов
/ 18 марта 2020

Просто добавьте WriteUninstaller [Path] exename.exe в раздел удаления.

Подробности см. Здесь: https://nsis.sourceforge.io/Docs/Chapter4.html

Опционально: Вы можете отключить / WX обрабатывает предупреждения как ошибки (удалить / WX из командной строки, переданной в makensis.exe)

Подробности см. Здесь: https://nsis.sourceforge.io/Docs/Chapter3.html#usagereference

...