Wtyczka InstallOptions 2

Ten dokument zgodny jest z NSIS 3.9


1. Wprowadzenie

Wtyczka InstallOptions jest wtyczką NSIS, która pozwala na tworzenie niestandardowych stron dla instalatorów NSIS, umożliwiających komunikację z użytkownikiem oraz wprowadzanie dodatkowych informacji.

Okna dialogowe utworzone przez wtyczkę InstallOptions oparte są na plikach INI, które definiują jego kontrolki oraz ich właściwości. Pliki te mogą być modyfikowane poprzez skrypt w czasie wykonania.

Format pliku INI opisany jest w artykule Wikipedii.

2. Struktura pliku INI

Plik INI posiada jedną wymaganą sekcję. Sekcja ta zawiera liczbę kontrolek, które zostaną utworzone podczas tworzenia okna. Plik INI zawiera również zmienną liczbę sekcji pól (Field), które są używane do tworzenia kontrolek, które zostaną wyświetlone.

Wymagana sekcja nazywa się: "Settings". Może przyjmować następujące wartości:

  • NumFields (wymagane)

    Liczba kontrolek wyświetlanych w oknie dialogowym.

  • Title (opcjonalne)

    Jeśli określony, zwraca tekst dla tytułu okna. W przeciwym przypadku, tekst tytułu okna nie jest zmieniany.

  • CancelEnabled (opcjonalne)

    Jeśli określony, nadpisuje ustawienia NSIS i włącza lub wyłącza przycisk Anuluj. Jeśli wartość ustawiona jest na 1, przycisk Anuluj będzie aktywny. Jeśli wartość ustawiona jest na 0, przycisk Anuluj będzie nieaktywny.

  • CancelShow (opcjonalne)

    Jeśli określony, nadpisuje ustawienia NSIS i wyświetla lub ukrywa przycisk Anuluj. Jeśli wartość ustawiona jest na 1, przycisk Anuluj będzie widoczny. Jeśli wartość ustawiona jest na 0, przycisk Anuluj będzie ukryty.

  • BackEnabled (opcjonalne)

    Jeśli określony, nadpisuje ustawienia NSIS i włącza lub wyłącza przycisk Wstecz. Jeśli wartość ustawiona jest na 1, przycisk Wstecz będzie aktywny. Jeśli wartość ustawiona jest na 0, przycisk Wstecz będzie nieaktywny.

  • CancelButtonText (opcjonalne)

    Nadpisuje tekst na przycisku Anuluj. Jeśli nie określony, tekst na przycisku Anuluj nie zostanie zmieniony.

  • NextButtonText (opcjonalne)

    Nadpisuje tekst na przycisku Dalej. Jeśli nie określony, tekst na przycisku Dalej nie zostanie zmieniony.

  • BackButtonText (opcjonalne)

    Nadpisuje tekst na przycisku Wstecz. Jeśli nie określony, tekst na przycisku Wstecz nie zostanie zmieniony.

  • Rect (opcjonalne)

    Nadpisuje domyślny ID obszaru rect, na którym jest wyświetlany. Pozwala to na zmianę rozmiaru IO na inny.

  • RTL (opcjonalne)

    Jeśli określono wartość 1 okno dialogowe wyświetlane jest jako lustrzane odbicie, a wszystkie teksty wyrównywane są do prawej. Makro INSTALLOPTIONS_EXTRACT automatycznie ustawia to pole na odpowiednią wartość w zależności od bieżącego języka instalatora dzięki zmiennej $(^RTL).

  • State (wyjście)

    Pole to ustawiane jest przez wtyczkę InstallOptions, przed wywołaniem funkcji walidacji niestandardowej strony, dla kontrolek, które posiadają flagę Notify (np. przycisk). Pole ustawiane jest, jeśli użytkownik wykona jakąś akcję (np. naciśnie przycisk).


Każde pole sekcji posiada nagłówek "Field #", w którym znak # musi być kolejnymi liczbami z zakresu 1 do NumFields. Każde pole sekcji może zawierać następujące wartości:


  • Type (wymagane)

    Typ kontrolki, która zostanie utworzona. Poprawnymi wartościami są: "Label", "Text", "Password", "Combobox", "DropList", "Listbox", "CheckBox", "RadioButton", "FileRequest", "DirRequest" "Icon", "Bitmap", "GroupBox", "HLine", "VLine", "Link" lub "Button".

    • Label

      Kontrolka Label używana jest do wyświetlania statycznego tekstu (np. etykieta dla kontrolki textbox).

    • Text

      Kontrolka Text przyjmuje tekst wprowadzany przez użytkownika.

    • Password

      Kontrolka Password przyjmuje tekst wprowadzany przez użytkownika oraz maskuje dane wejściowe przy użyciu znaku *.

    • Combobox

      Kontrolka Combobox pozwala użytkownikowi na wpisywanie tekstu nie na liście typu popup.

    • Droplist

      Kontrolka Droplist pozwala tylko na wybór elementów z listy.

    • Listbox

      Kontrolka Listbox wyświetla wiele elementów i opcjonalnie umożliwia użytkownikowi na wybranie więcej niż jednego z nich.

    • CheckBox

      Kontrolka CheckBox wyświetla pole wyboru wraz z etykietą.

    • RadioButton

      Kontrolka RadioButton wyświetla przycisk typu radio z etykietą.

    • FileRequest

      Kontrolka FileRequest wyświetla pole tekstowe i przycisk Przeglądaj. Klikając na ów przycisk, wyświetlone zostanie okno, z którego można wybrać poszukiwany przez użytkownika plik.

    • DirRequest

      Kontrolka DirRequest wyświetla pole tekstowe i przycisk Przeglądaj. Klikając na ów przycisk, wyświetlone zostanie okno, z którego można wybrać poszukiwany przez użytkownika katalog.

    • Icon

      Kontrolka Icon wyświetla ikonę. Jeśli pole Text jest puste, użyta zostanie ikonka instalatora.

    • Bitmap

      Kontrolka Bitmap wyświetla mapę bitową.

    • GroupBox

      Kontrolka GroupBox wyświetla ramkę, w której można zgrupować inne kontrolki.

    • HLine

      Kontrolka HLine wyświetla poziomą linię, która rozdziela kontrolki.

    • VLine

      Kontrolka VLine wyświetla pionową linię, która rozdziela kontrolki.

    • Link

      Kontrolka Link wyświetla statyczny "gorący" tekst. Wyświetla statyczny "gorący" tekst. Gdy użytkownik naciśnie tę kontrolkę zawartość "State" (np http://...) zostanie wykonana przy użyciu polecenia ShellExecute. Alternatywnie, wartość "State" może być pominięta, a flaga NOTIFY użyta do wywołania skryptu NSIS. Więcej informacji znajdziesz poniżej, w opisie flagi "NOTIFY".

    • Button

      Kontrolka Button wyświetla przycisk, którego można użyć tak samo jak kontrolkę "Link".

  • Text (opcjonalne)

    Określa tekst etykiet, pól wyboru lub przycisku typu radio. Dla kontrolki DirRequest określa tytuł okna dialogowego przeglądania. Dla kontrolek ikon oraz map bitowych określa ścieżkę dostępu do obrazka.

    Uwaga
    Dla etykiet, znaki \r\n zostaną przekonwertowane na nowe linie. Aby użyć znaku odwrotnego ukośnika back-slash w tekście musisz użyć innego ukośnika odwrotnego - \\. Opisane tutaj są funkcjami NSIS do konwersji tekstu z/na ten format.

  • State (opcjonalne)

    Określa stan kontrolki. Uaktualniany jest po zamknięciu przez użytkownika okna, więc można go odczytać z NSIS. Dla edycji tekstu, okien wybory katalogów oraz plików, jest to łańcuch znaków. Dla przycisków radio oraz pól wyboru, może to być wartość '0' lub '1' (odznaczony lub zaznaczony). Dla list, list kombinowanych i list rozwijalnych są to wybrane elementy rozdzielone znakiem ('|'). Dla łączy i Przycisków może określać coś do wykonania lub otwarcia (poprzez funkcję ShellExecute).

    Uwaga
    Dla pól Text z ustawioną flagą MULTILINE, znaki \r\n zostaną przekonwertowane na nowe linie. Aby użyć znaku odwrotnego ukośnika back-slash w tekście musisz użyć innego ukośnika odwrotnego - \\. Opisane tutaj są funkcjami NSIS do konwersji tekstu z/na ten format.

  • ListItems (opcjonalne)

    Lista elementów, które wyświetlane są w kontrolkach typu combobox, droplist, lub listbox.
    Jest to pojedyncza linia tekstu, z elementami rozdzielanymi znakiem '|'

  • MaxLen (opcjonalne)

    Powoduje walidację zaznaczonej kontrolki, ograniczając maksymalną długość tekstu.
    Jeśli użytkownik określi dłuższy tekst niż ten, pojawi się komunikat, po kliknięciu "OK" okno dialogowe nie zniknie.
    Nie powinieneś używać tego w kontrolkach "combobox", jako że użytkownik nie może kontrolować tego co jest zaznaczone.
    Wartość MaxLen może być przypisana maksymalnie dla 260 kontrolek "FileRequest" oraz "DirRequest".
    Ignorowane jest w kontrolkach "Label".

  • MinLen (opcjonalne)

    Powoduje walidację zaznaczonej kontrolki, wymuszając wpisanie określonej minimalnej długości tekstu.
    Jeśli użytkownik określi krótszy tekst niż ten, pojawi się komunikat, po kliknięciu "OK" okno dialogowe nie zniknie.
    W przeciwieństwie do MaxLen, MinLen jest użyteczne dla kontrolek "Combobox". Ustawiając jej wartość "1" program wymusi na użytkowniku wybranie elementu.
    Ignorowane jest w kontrolkach "Label".

  • ValidateText (opcjonalne)

    Jeśli pole nie przejdzie testu dla "MinLen" lub "MaxLen", pojawi się komunikat z tym tekstem.

    Uwaga
    Znaki \r\n zostaną przekonwertowane na nowe linie, dwa ukośniki odwroten back-slash zostanazmienione na jeden - \\. Opisane tutaj są funkcjami NSIS do konwersji tekstu z/na ten format.

  • Left, Right,Top, Bottom (opcjonalne)

    Pozycja, w której zostanie dana kontrolka wyświetlona w oknie dialogowym. Wszystkie rozmiary powinny być ustawione w jednostkach dialogowych. Aby pobrać prawidłowe wymiary dla kontrolki, projektuj swoje okno dialogowe przy pomocy edytora zasobów i następnie skopiuj wymiary do pliku INI.

    Uwaga
    Możesz określić ujemne współrzędne, aby ustalić odległość z prawej lub dolnej krawędzi.

    Uwaga (2)
    W kontrolkach typu lista kombinowana lub lista rozwijalna, wartość "bottom" nie jest używana w taki sam sposób.
    W tym przypadku, wartość bottom jest maksymalnym rozmiarem okna, gdy lista jest wyświetlana. W każdym przypadku, rozmiary elementów listy kombinowanej są automatycznie dopasowywane do rozmiaru jednego z nich. Jeśli masz problemy z zobaczeniem rozwiniętej listy kombinowanej, sprawdź wartość bottom i upewnij się że jest wystarczająco długa. Wymaganą wysokością elementu jest liczba elementów na liście pomnożona przez 8, plus 20.

    Uwaga (3)
    Kontrolki FileRequest oraz DirRequest alokują 15 jednostek dialogowych dla przycisku Przeglądaj. Upewnij się, że kontrolki te są odpowiednio szerokie, tak żeby można było zobaczyć ich tekstową zawartość.

  • Filter (opcjonalne)

    (opcjonalne)

    Określa filtr, który używany jest w kontrolce "FileRequest".
    Skonstruowany jest tak, że wpsiuje się pary wpisów, każda rozdzielona znakiem |.
    Pierwsza z wartości jest tekstem, który wyświetlany jest w filtrze.
    Druga z nich, jest wzorcem maski używanym do ograniczania wyświetlania plików.
    Na przykład, możesz określić:
    Filter=Pliki tekstowe|*.txt|Programy|*.exe;*.com|Wszystkie pliki|*.*
    Jeśli nie określone, filtr domyślnie wskazuje na Wszystkie Pliki|*.*

    Uwaga
    Nie powinieneś wstawiać żadnych dodatkowych spacji pomiędzy znaki |.

  • Root (opcjonalne)

    Używane przez kontrolkę DirRequest do określenia katalogu nadrzędnego przeszukiwania. Domyślnie, pozwala użytkownikowi na przeglądanie dowolnego katalogu na komputerze. Pozwala ograniczyć przeglądanie do określonego katalogu w systemie.

  • Flags (opcjonalne)

    Określa dodatkowe flagi dla wyświetlania kolejnych kontrolek. Każda wartość powinna być rozdzielona znakiem |. Uważaj, żeby nie było żadnych spacji przy znaku |.

    • REQ_SAVE

      Powoduje, że kontrolka "FileRequest" wyświetla okno dialogowe 'Zapisz jako'. Jeśli nie określone, używane jest okno dialogowe 'Otwórz'.

    • FILE_MUST_EXIST

      Używane przez kontrolkę "FileRequest" do określenia czy wybrany plik musi istnieć.
      Działa tylko wtedy gdy okno dialogowe 'Otwórz' jest wyświetlone.
      Obecnie działa tylko z oknem dialogowym przycisku Przeglądaj.

    • FILE_EXPLORER

      Używane przez kontrolkę "FileRequest", włącza widok żądania nowego pliku (zalecane)

    • FILE_HIDEREADONLY

      Używane przez kontrolkę "FileRequest", ukrywa pole wyboru "Otwórz tylko do odczytu" w oknie dialogowym 'Otwórz'.

    • WARN_IF_EXIST

      Używane przez kontrolkę "FileRequest" do wyświetlania komunikatu ostrzegawczego, że wybrany plik już istnieje.
      Wyświetla komunikat ostrzegawczy tylko dla plików wybranych przy użyciu okna dialogowego przycisku Przeglądaj.

    • PATH_MUST_EXIST

      Używane przez kontrolkę "FileRequest" do wymuszenia istnienia ścieżki dostepu. Ma na celu ochronę użytkownika, przed wpisaniem nieistniejącej ścieżki dostępu w oknie dialogowym przeglądania za plikiem.
      Sprawdza tylko wybraną ścieżkę dostępu okna dialogowego przycisku Przeglądaj.

    • PROMPT_CREATE

      Używane przez kontrolkę "FileRequest" do wyświetlania ostrzeżeń, jeśli wybrany plik nie istnieje. Mimo to, wciąż istnieje możliwość wybrania przez użytkownika pliku.
      Wyświetla komunikat ostrzegawczy tylko dla plików wybranych przy użyciu okna dialogowego przycisku Przeglądaj.
      Nie działa z REQ_SAVE.

    • RIGHT

      Używane przez kontrolkę "Checkbox" oraz "Radiobutton" do określenia czy pole wyboru ma być po prawej stronie tekstu czy też po jego lewej stronie (domyślnie).

    • MULTISELECT

      Używane przez kontrolkę "Listbox". Przełącza zazmaczenie lub odznaczenie łańcucha znaków, za każdym razem gdy użytkownik kliknie lub kliknie podwójnie ten wpis na liście. Użytkownik może wybrać dowolną liczbę wpisów. Jeśli ta flaga oraz flaga EXTENDEDSELCT nie jest określona, tylko jeden element będzie mógł być wybrany z listy.

    • EXTENDEDSELCT

      Używane przez kontrolkę "Listbox". Pozwala wielu elementom na zaznaczenie przy użyciu klawisza SHIFT oraz klawisza myszy lub też specjalną kombinacją klawiszy. Jeśli ta flaga oraz flaga MULTISELECT nie jest określona, z listy będzie można wybrać tylko jeden element.

    • RESIZETOFIT

      Pozwala kontrolce "Bitmap" na zmianę rozmiaru obrazka do rozmiaru kontrolki. Użyteczne również do obsługi własnych ustawień DPI. Bez tej flagi, obrazek będzie wyśrodkowany na określonym obszarze.

    • TRANSPARENT

      Używane przez kontrolkę "Bitmap". Ukrywa każdy piksel o tym samym kolorze co piksel w lewym górnym rogu. Pozwala to na uzyskanie efektu przezroczystości. Flaga ta nie działa poprawnie w kombinacji z flagą RESIZETOFIT oraz mapami bitowymi z więcej niż 256 kolorami.

    • GROUP

      Dodaj tę flagę do pierwszej z kontrolek grupy kontrolek, aby je zgrupować. Grupowanie kontrolek pozwala na tworzenie wielu grup przycisków typu radio i nawigacji pomiędzy nimi za pomocą klawiszy strzałek.

    • FOCUS

      Ustawia fokus na określonej kontrolce, zamiast domyślnej pierwszej. Jeśli więcej niż jedno pole ma określoną tę flagę, tylko pierwsza z nich zostanie aktywowana.

    • NOTABSTOP

      Nie zatrzymuje się na kontrolce, gdy użytkownik wciśnie klawisz tabulacji. Dodaj NOTABSTOP do wszystkich kontrolek grupy, poza pierwszą, aby mieć możliwość nawigacji pomiędzy nimi za pomocą klawisza tabulacji Tab.

    • DISABLED

      Dezaktywuje kontrolkę.

    • ONLY_NUMBERS

      Używane przez kontrolkę "Text". Wymusza wpisywanie tylko liczb do pola tekstowego.

    • MULTILINE

      Używane przez kontrolkę "Text". Sprawia, że kontrolka akceptuje wielowierszowy tekst.

    • WANTRETURN

      Używane przez kontrolkę "Text" z wielowierszowym tekstem. Pozwala na powrót karetki , po naciśnięciu przez użytkownika klawisza ENTER, po wpisaniu tekstu w pole tekstowe.

    • NOWORDWRAP

      Używane przez kontrolkę "Text" z wielowierszowym tekstem. Wyłącza zawijanie wierszy, które występuje przy wpisywaniu długich linii tekstu. Długie linie zamiast przewijania. Określenie flagi HSCROLL daje taki sam rezultat.

    • HSCROLL

      Wyświetla poziomy pasek przewijania. Użyty przez kontrolkę "Text" z wieloliniowym tekstem wyłącza zawijanie wierszy.

    • VSCROLL

      Wyświetla pionowy pasek przewijania.

    • READONLY

      Używane przez kontrolkę "Text". Uniemożliwia ona użytkownikowi wpisywanie lub edycję tekstu w kontrolce edycji - pozwala jednak użytkownikowi na zaznaczanie i kopiowanie tego tekstu.

    • NOTIFY

      Używane przez kontrolki "Button", "Link", "CheckBox", "RadioButton", "ListBox" oraz "DropList". Powoduje, że InstallOptions wywołuje funkcję walidacji/wyjścia niestandardowej strony NSIS, za każdym razem gdy zmieni się zaznaczenie danej kontrolki. Twoja funkcja walidacji/wyjścia może odczytywać wartość "State" z sekcji "Settings", aby określić, która z kontrolek spowodowała zgłoszenie (jeśli w ogóle), oraz wykonać jakąś określoną akcję, po instrukcji Abort (aby NSIS wrócił do strony). Katalog Examples\InstallOptions zawiera przykładowy skrypt, który prezentuje sposób użycia tej flagi.

  • TxtColor (opcjonalne)

    Używane przez kontrolkę Link, w celu określenia koloru tekstu. Format: 0xBBRRGG (heksadecymalnie).

  • HWND, HWND2 (opcjonalne)

    Wartość zwracana przez funkcję initDialog zawiera uchwyt HWND kontrolki tworzonej przez to pole. Może być użyte zamiast funkcji FindWindow oraz GetDlgItem. HWND2 zawiera uchwyt HWND dodatkowej kontrolki, na przykład przycisku Przeglądaj.

3. Plik nagłówkowy

Pliki nagłówkowe InstallOptions udostępniają makra i funkcje do łatwego tworzenia niestandardowych okien dialogowych. Możesz dołączyć je poprzez umieszczenie poniższej definicji na początku skryptu:

!include InstallOptions.nsh

4. Tworzenie okien dialogowych


4.1 Wyodrębnienie pliku INI


Pierwszym krokiem jest wyodrębnienie plików INI wtyczki InstallOptions w funkcji .onInit (lub funkcji un.onInit w deinstalatorze) przy użyciu makra INSTALLOPTIONS_EXTRACT. Pliki zostaną wyodrębnione do katalogu tymczasowego (katalog wtyczek NSIS), który zostanie automatycznie utworzony.

Function .onInit
  !insertmacro INSTALLOPTIONS_EXTRACT "ioFile.ini"
FunctionEnd

Jeśli plik INI znajduje się w innym katalogu, użyj makra INSTALLOPTIONS_EXTRACT_AS. Drugi parametr wskazuje na nazwę pliku w katalogu tymczasowym, która powinna być użyta jako wejście dla innych makr.

Function .onInit
  !insertmacro INSTALLOPTIONS_EXTRACT_AS "..\ioFile.ini" "ioFile.ini"
FunctionEnd

4.2 Wyświetlenie okna dialogowego


Możesz wywołać wtyczkę InstallOptions w funkcji strony zdefiniowanej przy użyciu polecenia Page lub UninstPage. Więcej informacji o systemie stron znajdziesz w dokumentacji NSIS (Skrypty -> Strony)

Page custom CustomPageFunction

Aby wyświetlić okno dialogowe, użyj makra INSTALLOPTIONS_DISPLAY:

Function CustomPageFunction ; Nazwa funkcji CustomPageFunction zdefiniowana jest polecenim Page
  !insertmacro INSTALLOPTIONS_DISPLAY "ioFile.ini"
FunctionEnd

5. Wejściowe dane użytkownika

Aby pobrać dane wejściowe od użytkownika, należy odczytać wartość State pola Field, używając makra INSTALLOPTIONS_READ:

!insertmacro INSTALLOPTIONS_READ $VAR "ioFile.ini" "Field #" "Name"

6. Zapis do pliku INI

Makro INSTALLOPTIONS_WRITE pozwala na zapis wartości do pliku INI, co pozwala na zmianę tekstu lub ustawień kontrolki w czasie wykonania:

!insertmacro INSTALLOPTIONS_WRITE "ioFile.ini" "Field #" "Name" "Value"

7. Znaki modyfikacji

Niektóre wartości InstallOptions są poprzedzane znakami modyfikacji (podobnie jak w łańcuchach znaków języka "C"). Aby umożliwić używanie znaków, które normalnie nie są poprawnymi wartościami pliku INI. Tymi wartościami są:

  • Pole ValidateText
  • Wartość Text pól Label
  • Wartość State pól Text, które mają ustawioną flagę MULTILINE

Znakiem modyfikacji jest tutaj znak odwrotnego ukośnika (back-slash - "\"), a dostępnymi sekwencjami są:

  • "\\" - Odwrotny ukośnik
  • "\r" - Powrót karetki (ASCII 13)
  • "\n" - Nowy wiersz (ASCII 10)
  • "\t" - Tab (ASCII 9)

Makra INSTALLOPTIONS_READ_CONVERT oraz INSTALLOPTIONS_WRITE_CONVERT automatycznie konwertują te znaki w kodzie instalatora. W kodzie deinstalatora użyj makr INSTALLOPTIONS_READ_UNCONVERT oraz INSTALLOPTIONS_WRITE_UNCONVERT.

Aby móc użyć te makra w skrypcie, musisz dołączyć funkcje konwertujące:

; Dla INSTALLOPTIONS_READ_CONVERT
  !insertmacro INSTALLOPTIONS_FUNCTION_READ_CONVERT
; Dla INSTALLOPTIONS_WRITE_CONVERT
  !insertmacro INSTALLOPTIONS_FUNCTION_WRITE_CONVERT
; Dla INSTALLOPTIONS_READ_UNCONVERT
  !insertmacro INSTALLOPTIONS_UNFUNCTION_READ_CONVERT
; Dla INSTALLOPTIONS_WRITE_UNCONVERT
  !insertmacro INSTALLOPTIONS_UNFUNCTION_WRITE_CONVERT

8. Walidacja wejścia

Jeśli chcesz sprawdzać wejściowe dane użytkownika (na przykład, sprawdzić czy użytkownik wypełnił odpowiednie pole), użyj funkcji wyjścia (Leave) polecenia Page oraz Abort, w przypadku, gdy walidacja nie powiedzie się:

Function ValidateCustom

  !insertmacro INSTALLOPTIONS_READ $R0 "test.ini" "Field 1" "State"
  StrCmp $R0 "" 0 +3
    MessageBox MB_ICONEXCLAMATION|MB_OK "Wpisz swoje imię."
    Abort

FunctionEnd

9. Zwracana wartość

Po utworzeniu okna dialogowego (używając funkcji Display lub Show), dostępna jest zwracana wartość:

  • success - użytkownik nacisnął przycisk "Dalej"
  • back - użytkownik nacisnął przycisk "Wstecz"
  • cancel - użytkownik nacisnął przycisk "Anuluj"
  • error - wystąpił błąd, okno dialogowe nie może być wyświetlone.

Wartość tę musisz sprawdzić, tylko w przypadku, gdy potrzebujesz zrobić coś specjalnego, jak wykonanie jakiejś operacji, po naciśnięciu przez użytkownika przycisku "Wstecz".

Makra INSTALLOPTIONS_DISPLAY_RETURN lub INSTALLOPTIONS_SHOW_RETURN służą do pobierania zwracanej wartości. Zostanie ona odłożona na stos. Aby ją pobrać użyj polecenia Pop.

10. Rezerwacja plików

Używając kompresji typu solid, należy zadbać o to, aby pliki, które będą wyodrębnione w wyniku działania funkcji interfejsu użytkownika, były ulokowane w bloku danych przed innymi. W przeciwnym razie, może wysąpić pewne opóźnienie przy wyświetlaniu strony

Aby temu zapobiec, przed kodem wszystkich sekcji oraz funkcji użyj polecenia ReserveFile dla wtyczki InstallOptions oraz plików INI.

ReserveFile "test.ini"
ReserveFile /plugin InstallOptions.dll

11. Czcionki i kolory

Jeśli chcesz używać własnych czcionek lub kolorów w oknach dialogowych InstallOptions, powinieneś użyć makr INSTALLOPTIONS_INITDIALOG oraz INSTALLOPTIONS_SHOW.

Makro INSTALLOPTIONS_INITDIALOG tworzy okno w pamięci, ale nie wyświetla go. Po wstawieniu makra, możesz ustawić czcionki oraz kolory, a następnie wstawić makro INSTALLOPTIONS_SHOW, aby wyświetlić to okno dialogowe.

Makro INSTALLOPTIONS_INITDIALOG macro odkłada uchwyt HWND tworzonego okna na stos. Operowanie uchwytami HWND dostępne jest dla każdej kontrolki dzięki wpisowi HWND odpowiedniego pola w pliku INI.

Przykład używania niestandardowych czcionek:

Var HWND
Var DLGITEM
Var FONT

Function FunctionName ; Nazwa funkcji FunctionName zdefiniowana jest poleceniem Page

  !insertmacro INSTALLOPTIONS_INITDIALOG "ioFile.ini"
  Pop $HWND ; Uchwyt HWND okna dialogowego

  !insertmacro INSTALLOPTIONS_READ $DLGITEM "ioFile.ini" "Field 1" "HWND"

  ; Zmienna $DLGITEM zawiera uchwyt HWND pierwszego pola
  CreateFont $FONT "Tahoma" 10 700
  SendMessage $DLGITEM ${WM_SETFONT} $FONT 0

  !insertmacro INSTALLOPTIONS_SHOW

FunctionEnd

12. Autorzy

Oryginalna wersja - Michael Bishop

Wersja DLL - Nullsoft, Inc.

Wersja 2 DLL - Amir Szekely, ORTIM, Joost Verburg

Nowa dokumentacja - Joost Verburg

13. Licencja

Original version Copyright © 2001 Michael Bishop
DLL version 1 Copyright © 2001 - 2002 Nullsoft, Inc., ORTIM
DLL version 2 Copyright © 2003 - 2024 Amir Szekely, Joost Verburg, Dave Laundon

This software is provided 'as-is', without any express or implied warranty. In no event will the
authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial
applications, and to alter it and redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the
   original software. If you use this software in a product, an acknowledgment in the product
   documentation would be appreciated but is not required.
2. Altered versions must be plainly marked as such, and must not be misrepresented as being the
    original software.
3. This notice may not be removed or altered from any distribution.