Сценарий NSIS для установки exe-файла, для которого необходимо указать регистрационное имя и ключ - PullRequest
0 голосов
/ 27 ноября 2010

Проблема: мне нужно написать nsi для выполнения ряда задач, включая создание папки, некоторые изменения настроек IE, изменения брандмауэра и установку exe.Устанавливаемый exe-файл является лицензионной копией и требует регистрационного имени и ключа, которые у меня есть.

Сценарий: мне нужно выполнить те же шаги после установки exe-файла на более чем 50 компьютерах, и я хочу сделать процесс без ошибок вручную.

Я успешно написал все шаги, но все ещенайти, как установить исполняемый файл, который запрашивает у меня регистрационное имя и ключ.

Спасибо lazywizar

1 Ответ

0 голосов
/ 13 июня 2011

Можете ли вы объяснить, как вы планируете обрабатывать регистрационное имя и ключ, понадобится ли вам сервер для проверки правильности установки?

В любом случае вам нужно создать пользовательскую страницу и создать пользовательские формы на этой странице.Примерно так:

Page custom CreatePage QuitPage

Где CreatePage - это функция, которая создает страницу ui

Пример:

;;In the variables section
var regname_hdl
var regkey_hdl
Var regname_inpt_hdl
var regkey_inpt_hdl
var RegName
var RegKey


Function CreatePage

GetDlgItem $0 $hwndParent 3
EnableWindow $0 0

nsDialogs::Create 1018
Pop $Dialog

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

${NSD_CreateLabel} 0 0 100% 10u "Say something to user"
Pop $Label

${NSD_CreateLabel} 20u 20u 20% 20u "Enter Registration Name "
Pop $regname_inpt_hdl

${NSD_CreateLabel} 20u 40u 20% 20u "Enter Registration Key "
    Pop $regkey_inpt_hdl


    ${NSD_CreateText} 30% 20u 30% 10u ""
    Pop $regname_hdl

    ${NSD_CreatePassword} 30% 40u 30% 10u ""
    Pop $regkey_hdl

    nsDialogs::Show

FunctionEnd

Function QuitPage

    ${NSD_GetText} $reg_hdl $2
    ${NSD_GetText} $key_hdl $3
    Push $3
    Push $2
    Pop $RegName
    Pop $RegKey


    ${If} '$2' == ""
          messageBox MB_ICONEXCLAMATION "Reg name is empty !"
          Abort
    ${ElseIf} '$3' == ""
         messageBox MB_ICONEXCLAMATION "Reg key is empty !"
         Abort
    ${Else}
           System::Alloc 9
           Pop $4
           ;; Here you have to call some procedure to check if reg name and key are valid
           ;; let's say the procedure returns 1 for true and 0 for false and it stores the result in $1

         ${If} $1 == 0
               messageBox MB_ICONEXCLAMATION "Installation denied !"
               Abort
         ${EndIf}
    ${EndIf}
    MessageBox MB_OK "Installation allowed !"

    SetPluginUnload manual
    System::Free 0

FunctionEnd
...