А в NSIS возможно сделать проверку ключа?
То есть пароль будет один.Пароль, который пользователь должен будет ввести в начале установки.
Используя пароль, задайте директиве Encryption значение yes, иначе файлы сохранятся как простой текст и получить к ним доступ не составит труда.
Если в NSIS есть возможность прервать установку, если строка ввода не удовлетворяет некоему условию (списку валидных ключей), то этого, думаю, достаточно
запостить здесь пример реализации под NSIS проверки введенного пользователем ключа
!include "MUI.nsh"
!include "nsDialogs.nsh"
SetCompress off
!insertmacro MUI_PAGE_WELCOME
Page custom fnCustomInit fnCustomDestroy
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
Name "CheckTest"
OutFile "CheckTest.exe"
ShowInstDetails show
Var Dialog
Var Text
Var Label
Function fnCustomInit
nsDialogs::Create 1018
Pop $Dialog
${NSD_CreateLabel} 0 5u 100u 10u "Введите серийный номер"
Pop $Label
${NSD_CreateText} 0 20u 100% 15u ""
Pop $Text
nsDialogs::Show
FunctionEnd
Function fnCustomDestroy
${NSD_GetText} $Text $R0
StrCmp $R0 "12345" +3 0
MessageBox MB_OK "Серийный номер введен неверно"
Quit
FunctionEnd
Section
DetailPrint "Hello from CheckTest"
SetAutoClose false
SectionEnd
Из 99% инсталяторов можно достать файлы в один клик Ctrl+PgDown правильно настроенным тоталом или фаром ....