WiX Toolset – Jak zmienić nazwę pliku wyjściowego, aby zawierał informacje o wersji
Powiedzmy, że mamy projekt który tworzy nam instalator. Fajnie.
Projekt tworzy nam plik uruchomieniowy o nazwie MyInstaller.exe
. Dobrze.
Wysyłamy taki plik naszej koleżance z pracy. Super.
Piszemy nowe funkcje i naprawiamy istniejące błędy. Extra.
Tworzymy instalator zawierający nową wersję programu. Bosko.
Musimy ręcznie zmienić nazwę z MyInstaller.exe
na coś w stylu MyInstaller.1.1.exe
. Smutek.
Nie róbimy rzeczy, które może za nas komputer zrobić.
Jak to naprawić smutek?
Po pierwsze zakładam, że tworzone przez ciebie assembly posiada poprawnie ustawioną wersję poprzez
[assembly: AssemblyVersion(VersionInfo.VersionString)]
[assembly: AssemblyFileVersion(VersionInfo.VersionString)]
U mnie wartości wersji pochodzą z jednej klasy definiującą stałą wartość używaną przez wszystkie projekty w solucji.
public class VersionInfo
{
public const string VersionString = "1.1.0.0";
}
Dzięki temu, mamy łatwe źródło informacji o wersji jaką będziemy instalować.
Do projektu instalatora .wixproj
dodajmy takie polecenia.
Po zbudowaniu instalatora – Target Name="AfterBuild"
GetAssemblyIdentity
pobiera numer wersji z.exe
- Numerek wersji trafia do zmiennej `%(AssemblyVersion.Version)
- Następnie oryginalny plik wynikowy
.\bin\$(Configuration)\$(OutputName).exe
zostaje skopiowany z nazwą zawierającą informacje o wersji w nazwie - Ostatnim krokiem jest usunięcie oryginalnego pliku wynikowego, bo jego kopia jest pod inną nazwą.