UpdVer

Už nějakou dobu mě při psaní YouTube Downloaderu obtěžovala práce s verzováním. Nebylo to nic vážného, jen drobnosti, které znamenají možná tři sekundy času vynaložené navíc, ale právě takovéhle drobnosti jsou tím, co mě často přiměje investovat pár hodin času do toho, abych se jich zbavil. A tady je výsledek: maličký prográmek UpdVer, který řeší dvě takové prkotiny. Třeba se bude hodit ještě někomu dalšímu.

Co tedy program, který se jako většina mých utilitek ovládá z příkazové řádky, umí:

  1. Vzít zdrojový .res soubor a upravit v něm číslo verze na číslo, které je zadané z příkazové řádky. Tedy zhruba totéž, co můžete udělat v Project Options, až na to, že na to nepotřebujete spouštět Delphi. To byl jeden důvod, proč jsem to psal, druhý byl ten, že při ruční editaci je třeba opravit hned několik míst a ta místa držet synchronizovaná; prográmek UpdVer prostě zaktualizuje verzi úplně všude, takže na to nemusím myslet.

    Mohli byste se ptát, proč použít UpdVer na zkompilovaný resource soubor (*.res), a ne nějaký jednoduchý textový nahrazovač na resource script (*.rc). To by byla naprosto správná otázka a v dokonalém světě bych vám musel odpovědět, že pro to žádný důvod není. Jenže my nežijeme v dokonalém světě, a konkrétně svět Delphi 5 (ze kterého nechci odcházet, protože produkuje velmi malé spustitelné soubory) hází resource scriptům do cesty poměrně klíčovou překážku: Resource compiler (BRCC32) sice dokáže resource script s informacemi o verzi zkompilovat, ale takto vytvořený resource soubor neodpovídá specifikacím a nelze použít…

    Mimochodem, než někdo začne namítat, že Delphi 5 patří do sběru a mezi tím bylo X novějších verzí: ano, bylo, ale jestli jsem neměl vidiny, tak i Delphi 2009 používají pořád ten samý BRCC32, který byl v Delphi 5…

  2. Druhý důvod pro UpdVer je ten, že command-line kompilátor Delphi neumí aktualizovat číslo buildu. Prostě to nedokáže. Takže pokud chci, aby v aplikaci bylo vidět, že se párkrát buildovala, musím každopádně nahodit integrované prostředí Delphi a buď buildovat v něm (což není zdaleka tak pohodlné jako buildování pomocí skriptů), nebo ručně sáhnout do informací o verzi a počet buildů navýšit ručně. A proto je tu UpdVer, který dovolí číslo buildu zvýšit o jedna.

    To je mimochodem další důvod pro to, proč přepisovat číslo verze v .res souboru a ne někde jinde (v resource scriptu nebo přímo v exáči): .res soubor je jediné místo, kde jde synchronizovat verzování mezi Delphi IDE a buildovacím skriptem (protože to je jediné místo, odkud Delphi verzi načtou – všude jinde ji jen zapisují).

Prográmek je skutečně maličký a lví podíl na něm má Colin Wilson, který napsal a pod rozumnou licencí (MPL) vypustil knihovnu ResourceUtils, kterou využívám. Je to vůbec docela zajímavé, že zatímco editorů zdrojů přímo v .exe se dá najít spousta, existuje podle všeho jen jediná knihovna, která by uměla pracovat se zdroji v souborech .res

Jak UpdVer používat

  1. Nastavení verze na zadanou hodnotu

    updver.exe -v 1.2.3.4 -s %d.%d.%d.%d soubor.res

    Parametr -v 1.2.3.4 říká, že se má nastavit verze na 1.2.3.4. Je také možné zadat verzi jako 1.2.3 nebo 1.2 – nepoužité hodnoty zůstanou v takovém případě nezměněny.

    Parametr -s %d.%d.%d.%d je nepovinný a udává tvar, ve kterém bude do souboru .res zapsána textová podoba verze. Jde o obyčejný formátovací řetězec (viz funkce Format v unitě SysUtils).

  2. Zvýšení čísla buildu o 1

    updver.exe -b soubor.res

    Jednodušší už to být nemůže. Parametr -b říká, že číslo buildu bude zvýšené o jedna. Je možné ho i kombinovat s -v výše, v tom případě se napřed nastaví verze (parametr -v) a pak se jí zvýší číslo buildu (parametr -b).

Licence

Program je uvolněn pod tzv. novou (tříbodovou) BSD licencí. Pozor, vzhledem k tomu, že ResourceUtils jsou licencovány pod MPL, nelze prográmek použít v programu licencovaném pod GPL!

Download

  • UpdVer v0.03 (2017-10-01, 232 KB, zdroják). Pozor, nekompatibilní změna: měnil se parametr -s na -f! Podpora pro změnu údajů v PE souborech (.exe, .dll atd.), a to i v 64bitových. Podpora pro změnu ne-verzových řetězců (např. lze měnit komentář nebo název produktu). Parametr -bak pro přeskočení záložního souboru. Parametr -o pro explicitní pojmenování výstupního souboru. Kompatibilita s Unicode Delphami, až do verze 10 Seattle (předchozí verze šla zkompilovat, ale nefungovala).

Starší verze

Podobné příspěvky:

3 Responses to “UpdVer”

  1. avatar pepak napsal:

    Verze 0.03: Pozor, nekompatibilní změna: měnil se parametr -s na -f! Podpora pro změnu údajů v PE souborech (.exe, .dll atd.), a to i v 64bitových. Podpora pro změnu ne-verzových řetězců (např. lze měnit komentář nebo název produktu). Parametr -bak pro přeskočení záložního souboru. Parametr -o pro explicitní pojmenování výstupního souboru. Kompatibilita s Unicode Delphami, až do verze 10 Seattle (předchozí verze šla zkompilovat, ale nefungovala).

  2. avatar pepak napsal:

    Verze 0.02: Podpora pro Unicode Delphi, podpora pro změnu verze v .rc souborech.

  3. avatar Radek napsal:

    Díky moc, ušetřil jsi mi práci.

    Radek

Leave a Reply

Themocracy iconWordPress Themes

css.php