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í:
-
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…
-
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
-
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 funkceFormat
v unitěSysUtils
). -
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
-
UpdVer v0.02 (2015-08-19, 83 KB, zdroják). Podpora pro Unicode Delphi, podpora pro změnu verze v
.rc
souborech. -
UpdVer v0.01 (2010-01-06, 110 KB).
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).
Verze 0.02: Podpora pro Unicode Delphi, podpora pro změnu verze v
.rc
souborech.Díky moc, ušetřil jsi mi práci.
Radek