Добавляем поддержку 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
[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"
!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.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
!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
Ну вот, вроде ничего не забыл. И пусть вам придет больше лишних денег 🙂
April 1st, 2010 at 10:08
Ещё бы посмотреть скриншотов, как это будет выглядеть…
April 1st, 2010 at 10:14
Дарагой, зачем скриншот? лучше демо! 🙂 Поставь Clipdiary, снеси Clipdiary… хотя зачем сносить, хороший программа! Можно начать удалять и остановиться:)
April 1st, 2010 at 10:17
ой… а где его скачать? почему в посте нет ссылки на программу с нужными ключевиками? :)))))
April 1st, 2010 at 10:22
Дык я же для людей пишу, а не для поисковиков!
Clipboard manager with history 🙂
April 10th, 2010 at 2:12
Странно, что ты nsDialogs не используешь. Многоязычной поддержки в инсталяторе нет?
April 10th, 2010 at 3:05
nsDialogs вроде не использую, первый раз слышу. А поддержку многоязычности вроде использую для некоторых прог.
April 10th, 2010 at 4:12
nsDialogs ввели с NSIS 2.26, т.е. достаточно давно, как замену InstallOptions. Вместо ini файлов все нюансы страниц задаются непосредственно в функциях, и встроенная NSISная функция подставления строк поддерживает многоязычность. Я даже не знаю, как без nsDialogs сделать многоязычный инсталлер. Кучу ini файлов на каждый язык таскать?
http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html
Кстати, точто “continue to enjoy all Clipdiary feature” а не “features”? Их же вроде много?
April 11th, 2010 at 3:31
видимо я писал давно, тогда еще не было nsDialog или я не знал про него.
Многоязычный инсталлер – имеется ввиду что стандартные строки переведены, у NSISa полно локализаций, а моя страница всегда на английском.
За features спасибо, сейчас попдправлю