Tak, pliki i versions produktów nie są powiązane. ProductVersion jest pokazany w Dodaj/usuń programy (Programy i funkcje) i jest używany głównie podczas scenariuszy modernizacji, aby zdecydować, co powinno się stać.
Własność produktu jest zdefiniowana jako [0-255]. [0-255]. [0-65535] (odpowiednio 8 816 bitów ze znakiem) Wersja pliku jest zdefiniowana jako [0-65535]. [0 -65535]. [0-65535]. [0-65535] (16,16,16,16 podpisany bit ...)
Dane tekstowe/XML/Config/BMP ectera będą puste. Zazwyczaj twoje narzędzie do tworzenia treści (takie jak InstallShield) będzie odzwierciedlało twoje wersjonowane pliki PE (DLL, OCX, SYS, EXE ...) w czasie kompilacji i automatycznie zapisuje ich numery wersji w tabeli plików.
Istnieje również opcja w InstallShield o nazwie "Zawsze zastępuj", że "wersja leży" do MSI w czasie kompilacji i mówi jej, że twój plik inny niż PE (TXT/XML ....) naprawdę ma numer wersji (zazwyczaj 65535.0.0.0) wykorzystuje to zachowanie w MSI, które pliki o zmienionej wersji Trump nie-wersja, decydując się na nadpisanie lub nie.
Tecnically EXE może być bez wersji, ale jest to anty-wzór. Plik bez wersji to dowolny plik, który nie ma rekordu zasobu wersji osadzonej.
Inna rzecz, o której należy pamiętać to, że domyślnie Instalator Windows analizuje datę utworzenia i datę modyfikacji pliku docelowego, decydując, czy plik src powinien nadpisać cel. Jeśli CD i MD są równe, to jest uważane za "dziewicze" (moje hasło) i występuje nadpisanie. Jeśli nie są równe, są traktowane jako "dane użytkownika" i nie są zastępowane, chyba że wykonasz sztuczkę Zawsze Zastępuj.
Inną rzeczą do zrozumienia jest to, że te oceny występują na poziomie pliku klucza komponentu. Wszelkie inne pliki towarzyszące w komponencie (jeśli nie są zgodne z plikiem 1: 1 na wytyczne dotyczące komponentów) będą następowały po przejściu pliku klucza.
Zdaj sobie również sprawę, że istnieje różnica między wartością AssemblyVersion i AssemblyFileVersion. The.Atrybut NET AssemblyFileVersion jest zgodny z atrybutem FileVersion. Atrybut AssemblyVersion jest używany tylko w celu silnego nazewnictwa i MSI nie dba o to.
Wreszcie, google "Reguły składnika Windows Installer", aby uzyskać więcej informacji.
Proszę dać mi znać, jeśli to ma sens i jeśli masz dodatkowe pytania. Pytałeś o kilkanaście pytań w jednym pytaniu, więc mógłbym coś pominąć. Proszę również zaakceptować tę odpowiedź.
Dzięki, to pomaga. Czy jest jakiś obiekt w visual studio lub dodatek do automagicznie uderzać FILEVERSION? Czy PRODUCTVERSION ma jakieś znaczenie w VS_VERSION_INFO. Czy wersje 12.2.16 i 12.02.16 są identyczne? –
To zupełnie inna puszka robaków zajmujących się automatyką budowania i ciągłą integracją odpowiedzialną za budowanie aplikacji i instalatora aplikacji. Będziesz chciał, aby ten proces wersjonował twoje pliki aplikacji i przekazywał właściwość wersji produktu do kompilacji instalatora. Wiele zależy od tego, jak wygląda twoje środowisko kompilacji. Osobiście używam Team Team Server Team Build wraz z http://tfsversioning.codeplex.com/ Możesz używać InstallShield lub Wise lub VB6, Deplhi, PowerBuilder, C#, Java dla wszystkich, których znam, więc nie ma konkretnej odpowiedzi. –
Czy program MSIEXEC faktycznie sprawdza, czy wersja w pliku .exe jest zgodna z wersją w tabeli plików? –