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