Добавляем поддержку trialpay к NSIS Uninstall скрипт

April 1st, 2010 Begemot Posted in Шаровароварение

Использовать trialpay для получение дополнительного дохода – хорошая идея, а предлагать пользователям получить программу бесплатно перед uninstall’ом просто замечательная 🙂

Итак будем добавлять поддержку trialpay в наш анинсталлер, я пользуюсь NSIS, соответственно код для него. Создаем специальную страницу под это дело, я использовал HM NIS Edit IO designer для визуального конструирования, в итоге получился вот такой вот файл UninstallTrialPay.ini

; Ini file generated by the HM NIS Edit IO designer.
[Settings]
NumFields=2

[Field 1]
Type=Label
Text=Because of our partnership with TrialPay, you can now get the fully-licensed version of Clipdiary, a $19.95 value, for free simply by trying or buying a product from one of our trusted partners.\r\n\r\nThat means you'll continue to enjoy all Clipdiary feature for Free!\r\n\r\n\r\nWith offers from trusted names such as eBay, Blockbuster, Stamps.com, and 100+ others, we're sure you'll find something you like!
Left=0
Right=300
Top=0
Bottom=112

[Field 2]
Type=Button
Text=Get it FREE now!
Flags=NOTIFY
Left=139
Right=284
Top=115
Bottom=138

Теперь добавляем его в основной скрипт,

!define MUI_FINISHPAGE_RUN_PARAMETERS
!insertmacro MUI_PAGE_FINISH
;;; From here!
; Uninstaller pages
  ReserveFile "UninstallTrialPay.ini"

;!insertmacro MUI_UNPAGE_CONFIRM
UninstPage custom un.PageUninstallTrialPay un.LeavePageUninstallTrialPay
!insertmacro MUI_UNPAGE_INSTFILES
;;; to here!
; Language files
!insertmacro MUI_LANGUAGE "English"

Дальше…

;-------------------------------- UNINSTALL FUNCTIONS

Function un.onInit
 …
;;; This line
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "UninstallTrialPay.ini"[/b]
...
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" /SD IDYES IDYES +2
Abort
FunctionEnd

Ну и наконец две основные функции

Function un.PageUninstallTrialPay
  !insertmacro MUI_HEADER_TEXT "Don't go yet! Get Clipdiary for FREE!" ""
;  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "UninstallTrialPay.ini"

  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "UninstallTrialPay.ini"
  Pop $HWND ;HWND of dialog

  !insertmacro MUI_INSTALLOPTIONS_READ $DLGITEM "UninstallTrialPay.ini" "Field 1" "HWND"

  ;$DLGITEM contains the HWND of the first field
  CreateFont $FONT "Tahoma" 10 700
  SendMessage $DLGITEM ${WM_SETFONT} $FONT 0

  !insertmacro MUI_INSTALLOPTIONS_READ $DLGITEM "UninstallTrialPay.ini" "Field 2" "HWND"
  SendMessage $DLGITEM ${WM_SETFONT} $FONT 0

  !insertmacro MUI_INSTALLOPTIONS_SHOW

FunctionEnd

Function  un.LeavePageUninstallTrialPay
  ; At this point the user has either pressed Next or one of our custom buttons
  ; We find out which by reading from the INI file
  ReadINIStr $0 "$PLUGINSDIR\UninstallTrialPay.ini" "Settings" "State"
  StrCmp $0 0 done      ; Next button?
  StrCmp $0 2 openurl  ; "Install support for X"?
;  Abort ; Return to the page

openurl:
  ExecShell "" "http://clipdiary.com/free-clipboard-manager.php?s=untrialpay"
  Abort ; Return to the page

done:
FunctionEnd

Ну вот, вроде ничего не забыл. И пусть вам придет больше лишних денег 🙂

Related:

8 Responses to “Добавляем поддержку trialpay к NSIS Uninstall скрипт”

  1. Ещё бы посмотреть скриншотов, как это будет выглядеть…

  2. Дарагой, зачем скриншот? лучше демо! 🙂 Поставь Clipdiary, снеси Clipdiary… хотя зачем сносить, хороший программа! Можно начать удалять и остановиться:)

  3. ой… а где его скачать? почему в посте нет ссылки на программу с нужными ключевиками? :)))))

  4. Дык я же для людей пишу, а не для поисковиков!
    Clipboard manager with history 🙂

  5. Евгений Минаков Says:

    Странно, что ты nsDialogs не используешь. Многоязычной поддержки в инсталяторе нет?

  6. nsDialogs вроде не использую, первый раз слышу. А поддержку многоязычности вроде использую для некоторых прог.

  7. Евгений Минаков Says:

    nsDialogs ввели с NSIS 2.26, т.е. достаточно давно, как замену InstallOptions. Вместо ini файлов все нюансы страниц задаются непосредственно в функциях, и встроенная NSISная функция подставления строк поддерживает многоязычность. Я даже не знаю, как без nsDialogs сделать многоязычный инсталлер. Кучу ini файлов на каждый язык таскать?
    http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html

    Кстати, точто “continue to enjoy all Clipdiary feature” а не “features”? Их же вроде много?

  8. видимо я писал давно, тогда еще не было nsDialog или я не знал про него.
    Многоязычный инсталлер – имеется ввиду что стандартные строки переведены, у NSISa полно локализаций, а моя страница всегда на английском.
    За features спасибо, сейчас попдправлю