Automated-build numer wersji z WiX, Inno Setup i VS2008

Zasadniczo potrzebuję zautomatyzowanego sposobu aktualizacji numeru wersji produktu w WiX (3.0 z Votive itp.), a następnie uzyskać ten numer wersji do Inno Setup "bootstrapper"

Mam proces głównie zautomatyzowany, jednak numery wersji nadal muszą być aktualizowane ręcznie, co oczywiście nie jest idealne, ale nie mogłem znaleźć, jak przekazać wartości do Inno Setup w czasie kompilacji( i jak się do nich odwołać), a w projekcie WiX muszę wiedzieć, jak się do nich odwołać numer wersji innego projektu w tym samym rozwiązaniu w Visual Studio 2008

Author: Davy8, 2008-12-11

5 answers

Nie musisz niczego zdawać! Możesz po prostu pozwolić Preprocesorowi InnoSetup odczytać informacje o wersji bezpośrednio z zasobu wersji binarnej, np.:

#define AppName "My App"
#define SrcApp "MyApp.exe"
#define FileVerStr GetFileVersion(SrcApp)
#define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
#define AppVerStr StripBuild(FileVerStr)

[Setup]
AppName={#AppName}
AppVersion={#AppVerStr}
AppVerName={#AppName} {#AppVerStr}
UninstallDisplayName={#AppName} {#AppVerStr}
VersionInfoVersion={#FileVerStr}
VersionInfoTextVersion={#AppVerStr}
OutputBaseFilename=MyApp-{#FileVerStr}-setup

Przed wersją 5.4.1 (2011-02-09) ISPP nie był zawarty w domyślnym pakiecie InnoSetup. Trzeba było pobrać pakiet InnoSetup Quick Start Pack: http://www.jrsoftware.org/isdl.php#qsp (dzięki @ Gwyn, za aktualizację)

 26
Author: Oliver Giesen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-07 07:37:45

Możesz pobrać ProductVersion dla WiX z wersji pliku w pakiecie. Składnia to coś w stylu:

<Product Version="$(var.FileVersion.FileId)">

Lub możesz podać go w wierszu poleceń do candle używając przełącznika "- dVersionFromCommandLine=1.0.0.0 " ze składnią:

<Product Version="$(var.VersionFromCommandLine)">

Albo działa w najnowszych kompilacjach WiX v3. Tylko ten ostatni działa na WiX v2.

 8
Author: Rob Mensching,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-11 18:51:11

Robię to za pomocą skryptu WSF (używam JavaScript, ale możesz użyć VBScript lub nawet skryptu Sh używającego Cygwina), który tworzy plik nagłówkowy zawierający definicje numerów wersji. Możesz użyć instrukcji Wix <include>, aby przeciągnąć numer wersji.

Dla Inno Setup tworzęplik iss zawierający numer wersji, który jest #zawarty w głównym skrypcie iss.

Jestem w domu, ale mogę opublikować przykładowy kod jutro, jeśli chcesz.

EDIT: zapomniałem wspomnij, że uruchamiam skrypt, który generuje pliki zawierające numer kompilacji podczas etapu pre-build moich różnych projektów VS.

 1
Author: Rob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-10 22:23:15

Jakiś przykładowy kod zgodnie z obietnicą. To powinno wystarczyć na początek.

Poniższy JavaScript może być użyty do utworzenia pliku InnoSetup iss zawierającego numer wersji. Rzeczywisty plik będzie wyglądał następująco:

VersionInfoVersion=1.2.3.12345
AppVerName=My App v1.2.3.12345

Główny skrypt Inno Setup będzie zawierał ten plik, dodając na końcu sekcji [Setup] :

[Setup]
AppId={{...}}
...

#include "version.iss"

Tutaj jest JavaScript (zostanie zapisany jako oddzielny plik-wersja.js na przykład):

createInnoSetupIncludeFile("My App", 1, 2, 3, 12345, "version.iss");

function createInnoSetupIncludeFile(appName, verMajor, verMinor, verSubMinor, buildNumber, headerFileName)
{
    var versionString = verMajor + "." + verMinor + "." + verSubMinor + "." + buildNumber;
    var fileSystemObject = WScript.CreateObject("Scripting.FileSystemObject");
    var fileObject = fileSystemObject.CreateTextFile(headerFileName, true);
    fileObject.WriteLine("VersionInfoVersion=" + versionString);
    fileObject.WriteLine("AppVerName=" + appName + " v" + versionString);
    fileObject.Close();
    fileObject = null;
    fileSystemObject = null;
}

Ty można dostosować ten skrypt, aby utworzyć wersję.plik iss w innym folderze.

Na koniec musisz uruchomić JavaScript - najlepsze miejsce będzie w przypadku Pre-Build Twojego projektu Visual Studio. Dodać:

cscript version.js //NoLogo

Trzeba by to zmienić, aby również zbudować plik dołączony zgodny z Wix. Kiedyś tak robiłem, ale wyrzuciłem Wix na rzecz Inno Setup, więc nie mam tego kodu do ręki. Jest jednak mechamizm dla skryptu Wix, więc powinno to wskazywać na właściwy kierunek - koncepcja jest taka sama-Wygeneruj plik tekstowy, który określa numer wersji, a następnie dołącz go.

Mam nadzieję, że to pomoże.
 1
Author: Rob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-11 08:06:17

Znalazłem to dla sekcji Inno setup, która wygląda jakby działała:

Http://agiletracksoftware.com/blog.html?id=4

 0
Author: Davy8,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-10 23:03:14