LazAutoUpdater/pl: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: LazAutoUpdater/pl
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ## Streszczenie | |
| 2 | + | ||
| 3 | + | - **LazAutoUpdate**  to wizualny komponent dla środowiska Lazarus/FPC IDE, który ułatwia i usprawnia aktualizowanie aplikacji ze źródła online. | |
| 4 | + | - Podczas tworzenia aplikacji do dystrybucji, kodowanie procesu aktualizacji dla użytkowników może być kłopotliwe, ale użytkownicy doceniają tę łatwość (o ile nie jest to dla nich wymuszone!), a wsparcie jest łatwiejsze, jeśli wiesz, że użytkownik ma zawsze najbardziej aktualną wersję Twojej aplikacji. LazAutoUpdate został zaprojektowany tak, aby dobrze integrował się z kontrolą wersji SourceForge lub GitHub, zapewniając bezproblemowe działanie dla Ciebie i Twoich użytkowników. | |
| 5 | + | - LazAutoUpdate pobierane jest za pośrednictwem wątku w tle, dzięki czemu użytkownik może kontynuować korzystanie z aplikacji bez przerw | |
| 6 | + | - Oznacza to na przykład, że Twoja aplikacja może „sprawdzać dostępność aktualizacji” podczas uruchamiania, bez zatrzymywania się. | |
| 7 | + | - LazAutoUpdate jest skierowany do programistów Lazarusa dla Windows i Linux, którzy hostują swój projekt w serwisach SourceForge lub GitHub. | |
| 8 | + | - Upuść komponent, ustaw kilka właściwości (nazwę projektu SourceForge lub niektóre właściwości GitHub) i wywołaj jedną prostą metodę: | |
| 9 | + | - **LazAutoUpdate.AutoUpdate** | |
| 10 | + | - Ty (programista) masz dużą kontrolę nad zachowaniem komponentu, ale jest on prosty w użyciu. | |
| 11 | + | - Użytkownicy końcowi postrzegają proces aktualizacji jako prosty i przejrzysty. | |
| 12 | + | - Komponent ten został opracowany i przetestowany w systemach Windows 10 64/32-bitowym i Linux 64/32-bitowym. | |
| 13 | + | ||
| 14 | + |   | |
| 15 | + | ||
| 16 | + | ------------------------------------------------------------------------ | |
| 17 | + | ||
| 18 | + | ## Pobieranie | |
| 19 | + | ||
| 20 | + | - Instalator pakietu LazAutoUpdate (Windows) lub zip (Linux) można pobrać ze [strony projektu na SourceForge](http://sourceforge.net/projects/lazautoupdate/) | |
| 21 | + | - Lazarus OnlinePackager również zawiera pakiet LazAutoUpdate | |
| 22 | + | ||
| 23 | + | ------------------------------------------------------------------------ | |
| 24 | + | ||
| 25 | + | ## Instalacja | |
| 26 | + | ||
| 27 | + | - Pobierz plik instalacyjny systemu Windows lub pliki binarne zip | |
| 28 | + | - Windows: Zainstaluj, Linux: Rozpakuj w zapasowym folderze | |
| 29 | + | - Użyj pakietu UpdatePack, aby tworzyć i rozpowszechniać pliki aktualizacji | |
| 30 | + | - Użyj komponentu LazAutoUpdate, aby dodać funkcję aktualizacji do swojej aplikacji Lazarus | |
| 31 | + | - **Będziesz musiał rozesłać updatehm\<os\>(.exe) ze swoją aplikacją, aby LazAutoUpdate działał poprawnie** | |
| 32 | + | - **Nie zapomnij ustawić numerów VersionInfo w opcjach projektu Lazarus** | |
| 33 | + | ||
| 34 | + | ------------------------------------------------------------------------ | |
| 35 | + | ||
| 36 | + | ## Przykładowa aplikacja | |
| 37 | + | ||
| 38 | + | - W pakiecie do pobrania znajduje się projekt 'TestApp' | |
| 39 | + | - Skompiluj i uruchom TestApp (pamiętając o skompilowaniu i skopiowaniu odpowiedniego aktualizatora konsoli (updatehm_xxx) do folderu wykonywalnego) | |
| 40 | + | - Powinien aktualizować się od razu bez podejmowania dodatkowych czynności | |
| 41 | + | - Sprawdź kod źródłowy TestApp, aby dowiedzieć się, jak wykorzystać pełny potencjał LazAutoUpdate | |
| 42 | + | ||
| 43 | + | ------------------------------------------------------------------------ | |
| 44 | + | ||
| 45 | + | ## Umiędzynarodowienie | |
| 46 | + | ||
| 47 | + | - i8n: LazAutoUpdate ma folder „locale” ze wszystkimi plikami .po potrzebnymi do tłumaczenia. Językiem podstawowym jest angielski | |
| 48 | + | ||
| 49 | + | ------------------------------------------------------------------------ | |
| 50 | + | ||
| 51 | + | ## Użycie | |
| 52 | + | ||
| 53 | + | - Ustaw numer wersji swojej aplikacji w Projekt/Opcje projektu.../Informacje o wersji | |
| 54 | + | ||
| 55 | + | (Uwaga! Jeśli tego nie zrobisz komponent może wygenerować błąd) | |
| 56 | + | ||
| 57 | + | - Upuść komponent na główny formularz aplikacji | |
| 58 | + | - Ustaw właściwość SFProjectName na nazwę projektu SourceForge (ten sam tekst, który pojawia się w adresie URL strony projektu) | |
| 59 | + | - lub... Ustaw właściwości GitHub: | |
| 60 | + | - Nazwa projektu GitHub: nazwa użytkownika lub organizacja | |
| 61 | + | - GitHubRepositoryName: Twój projekt/repozytorium | |
| 62 | + | - GitHubBranchOrTag: „master” dla nazwy katalogu głównego lub gałęzi GitHub „lub” Nazwa tagu | |
| 63 | + | - W obu przypadkach ustaw folder UpdatesFolder na lokalizację plików aktualizacji (możesz pozostawić go pustym) | |
| 64 | + | - Użyj pakietu UpdatePack, aby przesłać swoją aplikację do Internetu (SourceForge, GitHub itp.) | |
| 65 | + | - **Następnie pozwól komponentowi zająć się szczegółami. Po prostu użyj go (np. jako pozycji menu Pomoc „Sprawdź aktualizacje”)** | |
| 66 | + | ||
| 67 | + | ``` pascal | |
| 68 | + | LazAutoUpdate1.AutoUpdate; | |
| 69 | + | ``` | |
| 70 | + | ||
| 71 | + | - Jeśli nie chcesz, aby użytkownik zamknął aplikację w trakcie aktualizacji! Użyj tego kodu w obsłudze Form.CloseQuery: | |
| 72 | + | ||
| 73 | + | ``` pascal | |
| 74 | + | If LazAutoUpdate1.DownloadInProgress Then | |
| 75 | + | Begin | |
| 76 | + | CanClose := False; | |
| 77 | + | ShowMessage('Proszę czekać. Pobieranie aktualizacji nadal jest w toku.'); | |
| 78 | + | End; | |
| 79 | + | ``` | |
| 80 | + | ||
| 81 | + | - Po aktualizacji Twoja aplikacja może automatycznie wyświetlać „Co nowego”. Umieść tę linię w wydarzeniu OnShow swojego formularza: | |
| 82 | + | ||
| 83 | + | ``` pascal | |
| 84 | + | LazAutoUpdate1.ShowWhatsNewIfAvailable; | |
| 85 | + | ``` | |
| 86 | + | ||
| 87 | + | - W ten sposób otrzymujesz szkielet kodu aktualizacji dla Twojej aplikacji. Jak widać, wszystko jest całkiem automatyczne i proste. | |
| 88 | + | ||
| 89 | + | ### Większa kontrola | |
| 90 | + | ||
| 91 | + | - Zdecyduj, czy chcesz, aby Twoja aplikacja sprawdzała dostępność aktualizacji podczas uruchamiania. Jeśli tak, to podczas aktywacji w swoim formularzu umieść następujący kod: | |
| 92 | + | ||
| 93 | + | ``` pascal | |
| 94 | + | If LazAutoUpdate1.NewVersionAvailable Then | |
| 95 | + | MessageDlg(Application.Title, 'Dostępna jest nowa wersja ' + Application.Title + LineEnding + | |
| 96 | + | 'Kliknij ''Sprawdź nową wersję'' w menu Pomoc aby ją zaktualizować', mtConfirmation, | |
| 97 | + | [mbOK], 0); | |
| 98 | + | ``` | |
| 99 | + | ||
| 100 | + | - Jeśli nie korzystasz z metody AutoUpdate, masz kontrolę nad procesem aktualizacji etapami za pomocą funkcji: | |
| 101 | + | ||
| 102 | + | ``` pascal | |
| 103 | + | If LazAutoUpdate1.NewVersionAvailable then ..... else ... | |
| 104 | + | ``` | |
| 105 | + | ||
| 106 | + | ``` pascal | |
| 107 | + | If LazAutoUpdate1.DownloadNewVersion then ..... else ... | |
| 108 | + | ``` | |
| 109 | + | ||
| 110 | + | ``` pascal | |
| 111 | + | If LazAutoUpdate1.UpdateToNewVersion then ..... else ... | |
| 112 | + | ``` | |
| 113 | + | ||
| 114 | + | ### Debugowanie | |
| 115 | + | ||
| 116 | + | - Jeśli ustawisz | |
| 117 | + | ||
| 118 | + | ``` pascal | |
| 119 | + | LazAutoUpdate1.DebugMode:=TRUE; | |
| 120 | + | ``` | |
| 121 | + | ||
| 122 | + | wówczas możesz użyć wbudowanej metody OnDebugEvent do rejestrowania aktywności: | |
| 123 | + | ||
| 124 | + | ``` pascal | |
| 125 | + | procedure TForm1.LazAutoUpdate1DebugEvent(Sender: TObject; lauMethodName, | |
| 126 | + | lauMessage: string); | |
| 127 | + | begin | |
| 128 | + | // Użyj TEventLog | |
| 129 | + | Logger.Info('('+lauMethodName+') - ' + lauMessage); | |
| 130 | + | end; | |
| 131 | + | ``` | |
| 132 | + | ||
| 133 | + | Są tu też dostępne zdarzenia: OnDownloaded i OnNewVersionAvailable oraz właściwość LastError z informacjami, które można wykorzystać do debugowania. | |
| 134 | + | ||
| 135 | + | ------------------------------------------------------------------------ | |
| 136 | + | ||
| 137 | + | ## Wsparcie | |
| 138 | + | ||
| 139 | + | - LazAutoUpdate jest obsługiwane przez forum Lazarus [w tym wątku](http://forum.lazarus.freepascal.org/index.php/topic,25444.0.html). | |
| 140 | + | ||
| 141 | + | ------------------------------------------------------------------------ | |
| 142 | + | ||
| 143 | + | ## Licencja | |
| 144 | + | ||
| 145 | + | - LazaAutoUpdate: LGPLv2 (tak samo jak komponenty Lazarusa) | |
| 146 | + | - Pakiet aktualizacji: GPLv2 | |
| 147 | + | ||
| 148 | + | ------------------------------------------------------------------------ | |
| 149 | + | ||
| 150 | + | ## Wdrażanie aplikacji za pomocą LazAutoUpdate | |
| 151 | + | ||
| 152 | + | - Użyj UpdatePack do zarządzania procesem. | |
| 153 | + | - UpdatePack to aplikacja z graficznym interfejsem użytkownika, która umożliwia dokładne i szybkie aktualizowanie plików aktualizacji, a nawet zapewnia odpowiedni kod LazAutoUpdate dla Twojej aplikacji. | |
| 154 | + | - Wykorzystuje ona „profile”, które umożliwiają wdrażanie przyszłych aktualizacji, po prostu aktualizując numer wersji i klikając „Utwórz pakiet aktualizacji”. | |
| 155 | + | - Użytkownicy Twojej aplikacji skorzystają na tym, że zawsze będzie dostępna najnowsza wersja oprogramowania | |
| 156 | + | - Podczas testowania pamiętaj, że Twoja aplikacja testowa powinna mieć niższy numer wersji niż aplikacja do aktualizacji przechowywana online :) | |
| 157 | + | - Jeżeli chcesz samodzielnie skomponować (lub dodać) plik zip aktualizacji, powinien on zawierać co najmniej aplikację **i** plik tekstowy 'whatsnew.txt'. | |
| 158 | + | ||
| 159 | + | <figure> | |
| 160 | + | <img src="updatepack1.jpg" title="updatepack1.jpg" /> | |
| 161 | + | <figcaption>updatepack1.jpg</figcaption> | |
| 162 | + | </figure> | |
| 163 | + | ||
| 164 | + | <figure> | |
| 165 | + | <img src="updatepack2.jpg" title="updatepack2.jpg" /> | |
| 166 | + | <figcaption>updatepack2.jpg</figcaption> | |
| 167 | + | </figure> | |
| 168 | + | ||
| 169 | + | ------------------------------------------------------------------------ | |
| 170 | + | ||
| 171 | + | ## Korzystanie z auOtherSourceFilename i auOtherSourceURL | |
| 172 | + | ||
| 173 | + | - Gdy ProjectType jest ustawiony na auOther, LazAutoUpdate użyje tych właściwości dla wszystkich metod. Zobacz przykładową aplikację w archiwum SVN. | |
| 174 | + | ||
| 175 | + | ------------------------------------------------------------------------ | |
| 176 | + | ||
| 177 | + | ## Aplikacja LazAutoUpdate w zasobniku systemowym tray | |
| 178 | + | ||
| 179 | + | - Można ją znaleźć w folderze /trayicon kodu źródłowego. | |
| 180 | + | - Po uruchomieniu znajduje się ona w obszarze zasobnika systemowego (tray) i po cichu sprawdza dostępność aktualizacji za pomocą harmonogramu (konfigurowalne przez programistę i użytkownika) | |
| 181 | + | - Jeśli znajdzie nową wersję, wyświetli użytkownikowi powiadomienie o konieczności aktualizacji: | |
| 182 | + | - Jeśli aplikacja nie działa, aktualizacja odbywa się po cichu w tle | |
| 183 | + | - Jeśli aplikacja jest uruchomiona, zamyka ją, a następnie wykonuje aktualizację. Aplikacja uruchomi się ponownie | |
| 184 | + | - Systray Updater ma menu dostępne po kliknięciu prawym przyciskiem myszy: | |
| 185 | + | - Konfiguracja: | |
| 186 | + | - Użytkownik może edytować harmonogram – każda aplikacja ma swój „profil” | |
| 187 | + | - Uruchamia się przy starcie (Windows): | |
| 188 | + | - Zasobnik systemowy ładuje się bezgłośnie przy każdym rozruchu systemu Windows | |
| 189 | + | - Zasobnik systemowy (lautraynotify) automatycznie pobiera wpisy z aplikacji korzystających z LazAutoupdate, więc nigdy nie trzeba jej konfigurować - wystarczy zainstalować raz i zapomnieć. | |
| 190 | + | - Harmonogram jest elastyczny, może uruchamiać proces raz dziennie do raz w miesiącu | |
| 191 | + | - UpdatePack zajmuje się tworzeniem pliku konfiguracyjnego zasobnika systemowego dla Twojej aplikacji. Domyślnie sprawdzanie odbywa się w każdy poniedziałek o 9 rano. | |
| 192 | + | - Aplikacja na pasku zadań działa zarówno w systemie Windows, jak i Linux — wystarczy ją wdrożyć. | |
| 193 | + | ||
| 194 | + | ------------------------------------------------------------------------ | |
| 195 | + | ||
| 196 | + | ## Tworzenie ogólnego instalatora/aktualizatora online | |
| 197 | + | ||
| 198 | + | - Po upuszczeniu składnika LazAutoUpdate na formularz, można go używać do wielu aktualizacji, pobierania itp. (patrz „/testinstaller” w źródle pakietu) | |
| 199 | + | - W przypadku zwykłego instalatora/aktualizatora należy ustawić: | |
| 200 | + | - VersionsINIFilename | |
| 201 | + | - ZipFilename | |
| 202 | + | - AppFileWithPath | |
| 203 | + | - AppVersion | |
| 204 | + | - Ustawiając te właściwości dynamicznie (być może za pomocą menu), możesz umożliwić użytkownikowi aktualizowanie wielu aplikacji hostowanych na witrynie projektu SourceForge/GitHub (lub dowolnej witrynie korzystającej z ustawień auOther - patrz wyżej) | |
| 205 | + | ||
| 206 | + | - Oto przykładowy kod do użycia LazAutoUpdate do pobrania, a następnie uruchomienia aplikacji. | |
| 207 | + | - Skompresowane pliki aplikacji (w tym 'whatsnew.txt') i plik 'mywizzyapp.ini' znajdują się w podkatalogu /updates projektu SourceForge 'mywizzy' | |
| 208 | + | - Plik wykonywalny 'updatehm(ostype)(.exe)' znajduje się w tym samym katalogu co aplikacja aktualizacyjna | |
| 209 | + | - ostype=\[win32\|win64\|linux32\|linux64\] | |
| 210 | + | - Windows ext=(.exe) | |
| 211 | + | - Użytkownik pobierałby mały instalator InnoSetup za pomocą samego instalatora/aktualizatora online, który z kolei pobierałby aplikacje i pliki pomocnicze. | |
| 212 | + | - Oczywiście „instalator” może **być** twoją główną aplikacją, z aplikacjami siostrzanymi, które można zainstalować za pomocą menu lub czymś podobnym. | |
| 213 | + | ||
| 214 | + | ``` pascal | |
| 215 | + | procedure TForm1.Button1Click(Sender: TObject); | |
| 216 | + | // Uses SysUtils,LazFileUtils,ulazautoupdate itp. | |
| 217 | + | Var sDirectoryToInstallTo: string; | |
| 218 | + | begin | |
| 219 | + | sDirectoryToInstallTo := ProgramDirectory + 'installed'; | |
| 220 | + | Application.Title:='My whizzy app' | |
| 221 | + | LazAutoUpdate1.WorkingMode := lauInstall; | |
| 222 | + | LazAutoUpdate1.ProjectType := auSourceForge; | |
| 223 | + | LazAutoUpdate1.SFProjectname:='mywizzy'; | |
| 224 | + | LazAutoUpdate1.VersionsININame:='mywizzyapp.ini'; | |
| 225 | + | LazAutoUpdate1.ZipfileName:='mywizzyapp.zip'; | |
| 226 | + | LazAutoUpdate1.AppFileWithPath := sDirectoryToInstallTo + DirectorySeparator + 'mywizzyapp.exe'; | |
| 227 | + | // Odpowiada za stworzenie folderu | |
| 228 | + | if not DirectoryExistsUTF8(sDirectoryToInstallTo) then ForceDirectoriesUTF8(sDirectoryToInstallTo); | |
| 229 | + | LazAutoUpdate1.Appversion:='0.0.0.0'; | |
| 230 | + | If LazAutoUpdate1.DownloadNewVersion then | |
| 231 | + | begin | |
| 232 | + | If LazAutoUpdate1.UpdateToNewVersion then | |
| 233 | + | begin | |
| 234 | + | LazAutoUpdate1.ShortCut.Category := scUtility; | |
| 235 | + | LazAutoUpdate1.ShortCut.Target := LazAutoUpdate1.AppFileWithPath; | |
| 236 | + | LazAutoUpdate1.ShortCut.ShortcutName := Application.Title; | |
| 237 | + | LazAutoUpdate1.MakeShortCut; // tworzy skrót na pulpicie i wpis w menu Start w systemie Windows | |
| 238 | + | end; | |
| 239 | + | end; | |
| 240 | + | end; | |
| 241 | + | ``` | |
| 242 | + | ||
| 243 | + | - Następnie możesz łatwo programowo uruchomić zainstalowaną aplikację: | |
| 244 | + | ||
| 245 | + | ``` pascal | |
| 246 | + | // Uses asyncprocess | |
| 247 | + | procedure TForm1.RunInstalledApp; | |
| 248 | + | var | |
| 249 | + | AProcess: TAsyncProcess; | |
| 250 | + | begin | |
| 251 | + | if not FileExistsUTF8(LazAutoUpdate1.AppFileWithPath) then | |
| 252 | + | begin | |
| 253 | + | ShowMessageFmt('Aplikacja %s nie istnieje! Najpierw ją zainstaluj.', | |
| 254 | + | [LazAutoUpdate1.AppFileWithPath]); | |
| 255 | + | Exit; | |
| 256 | + | end; | |
| 257 | + | AProcess := TAsyncProcess.Create(nil); | |
| 258 | + | try | |
| 259 | + | AProcess.Executable := LazAutoUpdate1.AppFileWithPath; | |
| 260 | + | AProcess.Execute; | |
| 261 | + | finally | |
| 262 | + | Aprocess.Free; | |
| 263 | + | end; | |
| 264 | + | end; | |
| 265 | + | ``` | |
| 266 | + | ||
| 267 | + | ------------------------------------------------------------------------ | |
| 268 | + | ||
| 269 | + | ## Lista metod publicznych | |
| 270 | + | ||
| 271 | + | - Function NewVersionAvailable: Boolean; | |
| 272 | + | - Function DownloadNewVersion: Boolean; | |
| 273 | + | - Function UpdateToNewVersion: Boolean; | |
| 274 | + | - Procedure ShowWhatsNewIfAvailable; | |
| 275 | + | - Procedure AutoUpdate; | |
| 276 | + | - function AppIsActive; | |
| 277 | + | - procedure ResetAppVersion; | |
| 278 | + | ||
| 279 | + | ------------------------------------------------------------------------ | |
| 280 | + | ||
| 281 | + | ## Lista właściwości niepublikowanych | |
| 282 | + | ||
| 283 | + | - GUIOnlineVersion: String; | |
| 284 | + | - ReturnCode: Integer; | |
| 285 | + | - DownloadInprogress: Boolean; | |
| 286 | + | - AppFileWithPath: String; | |
| 287 | + | - AppVersion: String; | |
| 288 | + | - LastError: String; | |
| 289 | + | - DebugMode: Boolean; | |
| 290 | + | - LCLVersion: String; | |
| 291 | + | - WidgetSet: String; | |
| 292 | + | - FPCVersion: String; | |
| 293 | + | - LastCompiled: String; | |
| 294 | + | - TargetOS: String; | |
| 295 | + | - WindowsAdminCheck: Boolean; | |
| 296 | + | ||
| 297 | + | ------------------------------------------------------------------------ | |
| 298 | + | ||
| 299 | + | ## Wdrażanie wielu aktualizacji w jednym projekcie | |
| 300 | + | ||
| 301 | + | - Domyślnie nazwa pliku ZipFilename jest taka sama jak w Twojej aplikacji, ale możesz ustawić jej unikalną wartość i wdrożyć ją w swoim katalogu plików/aktualizacji online | |
| 302 | + | - Każda aplikacja, która ma zostać zaktualizowana, powinna mieć unikalną nazwę pliku version.ini. Ustaw właściwość VersionsINIFilename. | |
| 303 | + | ||
| 304 | + | ------------------------------------------------------------------------ | |
| 305 | + | ||
| 306 | + | ## W przypadku, gdy pobieranie trwa zbyt długo | |
| 307 | + | ||
| 308 | + | - Właściwość VersionCountLimit określa, jak długo LazAutoUpdate będzie sprawdzać dostępność nowej wersji przed przekroczeniem limitu czasu. | |
| 309 | + | - Właściwość DownloadCountLimit określa, jak długo LazAutoUpdate będzie próbował pobrać nową wersję przed przekroczeniem limitu czasu. | |
| 310 | + | ||
| 311 | + | ------------------------------------------------------------------------ | |
| 312 | + | ||
| 313 | + | ## Versions.ini | |
| 314 | + | ||
| 315 | + | Format jest następujący: | |
| 316 | + | ||
| 317 | + | `;LazAutoUpdate versions file`\ | |
| 318 | + | `[versions]`\ | |
| 319 | + | `GUI=0.0.2` | |
| 320 | + | ||
| 321 | + | - Ten plik jest mały, dzięki czemu można go bardzo szybko pobrać | |
| 322 | + | ||
| 323 | + | ------------------------------------------------------------------------ | |
| 324 | + | ||
| 325 | + | ## Kod źródłowy i najnowsze wersje | |
| 326 | + | ||
| 327 | + | - [Strona projektu](https://sourceforge.net/projects/lazautoupdate/) | |
| 328 | + | - [SVN HTTP Checkout](https://svn.code.sf.net/p/lazarus-ccr/svn/components/lazautoupdate/latest_stable) | |
| 329 | + | ||
| 330 | + | ------------------------------------------------------------------------ | |
| 331 | + | ||
| 332 | + | ## Bezpieczeństwo | |
| 333 | + | ||
| 334 | + | ### Windows 10 | |
| 335 | + | ||
| 336 | + | - Zabezpieczenia systemu Windows 10 nie pozwolą użytkownikom niebędącym administratorami na aktualizowanie aplikacji z Internetu (chyba że jest to aplikacja Windows Store). Moim zdaniem jest to rozsądna polityka i LazAutoUpdate się do niej stosuje. | |
| 337 | + | - Jeśli „zwykły użytkownik” spróbuje zaktualizować aplikację za pomocą LazAutoUpdate, wszystko pójdzie gładko aż do ostatniej fazy „Aktualizuj aplikację”. W tym momencie LazAutoUpdate wyświetli okno dialogowe informujące użytkownika, że do rzeczywistej aktualizacji potrzebne jest konto administratora. | |
| 338 | + | - W przypadku „użytkownika administratora” LazAutoUpdate wyświetli okno dialogowe UAC (takie samo jak w przypadku każdego instalatora) i przejdzie dalej po kliknięciu „tak”, aby wykonać aktualizację. | |
| 339 | + | - Jeśli chcesz to obejść (na przykład za pomocą manifestu), LazAutoUpdate ma właściwość publiczną „WindowsAdminCheck”, którą możesz ustawić na FALSE i uniknąć okna dialogowego. | |
| 340 | + | ||
| 341 | + | ### Linux | |
| 342 | + | ||
| 343 | + | - Linux wykona aktualizację bez pokazywania konsoli aktualizacji, a użytkownik otrzymuje bezproblemową obsługę. | |
| 344 | + | ||
| 345 | + | ------------------------------------------------------------------------ | |
| 346 | + | ||
| 347 | + | ## Przepływ pracy | |
| 348 | + | ||
| 349 | + | (Wyjaśnienia techniczne) | |
| 350 | + | ||
| 351 | + | Przepływ pracy Lazarus Auto-Updater do aktualizacji uruchomionej aplikacji wygląda następująco: | |
| 352 | + | ||
| 353 | + | - Aplikacja pobiera mały plik 'version.ini' z Sourceforge lub github z informacją o wersji (może to zrobić przy starcie) | |
| 354 | + | - Aplikacja porównuje się z własną wersją wewnętrzną | |
| 355 | + | - Jeśli dostępna jest nowa wersja | |
| 356 | + | - Aplikacja usuwa zawartość lokalnego folderu /updates | |
| 357 | + | - Pobiera aplikację, a następnie rozpakowuje ją z Internetu do lokalnego folderu /updates | |
| 358 | + | - Aplikacja używa TAsyncProcess do uruchomienia konsoli updater.exe, przekazując mu w wierszu poleceń nazwę pliku do aktualizacji | |
| 359 | + | - updater.exe kopiuje pobrany plik 'whatsnew.txt' do folderu aplikacji i przechodzi w stan uśpienia na kilka sekund | |
| 360 | + | - W międzyczasie aplikacja wchodzi w pętlę sprawdzania, czy plik 'whatsnew.txt' został skopiowany do tego katalogu | |
| 361 | + | - Aplikacja wykrywa 'whatsnew.txt' i zamyka się. (innymi słowy TProcess rozpoczął się pomyślnie) | |
| 362 | + | - Aktualizator kopiuje /updates/UpdatedApp do katalogu aplikacji. | |
| 363 | + | - Updater używa TProcess do uruchomienia zaktualizowanej aplikacji | |
| 364 | + | - W Form.Show aplikacja wyświetla plik 'whatsnew.txt', a następnie go usuwa | |
| 365 | + | ||
| 366 | + | To co widzi użytkownik: | |
| 367 | + | ||
| 368 | + | - Okno dialogowe: 'There's a new version of xxx available. Would you like to download it?' Yes/No ('Dostępna jest nowa wersja xxx. Czy chcesz go pobrać?' Tak/Nie) | |
| 369 | + | - Jeśli kliknięto Tak: | |
| 370 | + | - Pobieranie odbywa się w tle (poprzez wątek w tle). Opcjonalnie wyświetlany jest „licznik pobierania” w celu wskazania postępu. | |
| 371 | + | - Użytkownik nie może zamknąć aplikacji podczas pobierania (w Form.CloseQuery) | |
| 372 | + | - Okno dialogowe: 'The update is downloaded. Click OK to install it and restart xxx now' OK („Aktualizacja została pobrana. Kliknij OK, aby teraz zainstalować i zrestartować xxx' OK) | |
| 373 | + | - Użytkownik klika OK | |
| 374 | + | - Konsola (okno DOS w systemie Windows) otworzy się automatycznie, a aplikacja zostanie zamknięta. Konsola wyświetla komunikat 'Please wait updating xxx' („Proszę czekać, trwa aktualizacja xxx”) | |
| 375 | + | - Po kilku sekundach konsola znika i uruchamia się nowa wersja aplikacji | |
| 376 | + | - Zaraz po wyświetleniu głównego okna pojawia się okno informacyjne 'What's New' („Co nowego”) z przyciskiem OK | |
| 377 | + | - Użytkownik klika przycisk OK i nigdy więcej nie widzi informacji | |
| 378 | + | ||
| 379 | + | ------------------------------------------------------------------------ | |
| 380 | + | ||
| 381 | + | Minesadorada | |
| 382 | + | ||
| 383 | + | --- | |
| 384 | + | *From the Free Pascal wiki, page "LazAutoUpdater/pl", as it stood on 2022-01-07 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
