Jak Mogę ustawić wersję Instalatora WiX na aktualną wersję kompilacji?
Napisałem aplikację i jej instalator WiX i umieściłem ją pod kontrolą wersji za pomocą subversion. Gdy Instalator Wix buduje chcę, aby jego numer wersji był bieżącą wersją kompilacji aplikacji. Jak to osiągnąć? Użyłem c# do kodowania aplikacji.
N. B. używam ccnet do budowy tego projektu
5 answers
Możesz użyć Product/@Version="!(bind./ Align = "left" / FileId) " (zamień {[0] } na Id
pliku, z którego chcesz uzyskać numer wersji) i light.exe wypełni wartość wersją pliku, do której odwołuje się FileId
.
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
2016-03-02 19:04:20
Zrobiłem to w jednym z moich projektów, pisząc rozszerzenie preprocesora, aby odczytać wersję pliku z mojego pliku wykonywalnego. Więc plik WiX wygląda tak:
<?define ProductName="$(fileVersion.ProductName($(var.MyApp.TargetPath)))" ?>
<?define CompanyName="$(fileVersion.CompanyName($(var.MyApp.TargetPath)))" ?>
<?define ProductVersion="$(fileVersion.ProductVersion($(var.MyApp.TargetPath)))" ?>
<Product
Id="<product ID>"
Name="$(var.ProductName)"
Version="$(var.ProductVersion)"
Manufacturer="$(var.CompanyName)"
Language="1033"
UpgradeCode="<upgrade code>">
Umieściłem kod dla In Na CodePlex: http://wixfileversionext.codeplex.com/
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
2009-03-14 14:51:37
W przypadku, gdy ktoś szuka rzeczywistego przykładu XML, działa to z. NET assemblies(i nie musisz wykonywać atrybutów Assembly lub KeyPath). Wyeliminowałem niepowiązany kod z [..."miejsce": {]}
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product [...] Version="!(bind.fileVersion.MyDLL)">
[...]
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="INSTALLDIR" Name="MyDLLInstallLocation">
<Component Id="MainLib" Guid="[...]">
<File Id="MyDLL" Name="MyDll.dll" Source="MyDll.dll" />
[...]
</Component>
[...]
</Directory>
</Directory>
</Directory>
</Product>
</Wix>
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
2015-07-29 17:32:58
Oto bardzo prosty sposób na dopasowanie wersji pakietu Bootstrapper do wersji MyApp AssemblyVersion za pomocą BeforeBuild Target
i DefineConstants
.
<Bundle Name="$(var.ProductName) Bootstrapper v$(var.BuildVersion)"
Version="$(var.BuildVersion)"
Bootstrapper.wixproj:
<Target Name="BeforeBuild">
<GetAssemblyIdentity AssemblyFiles="..\MyApp\bin\$(Configuration)\MyApp.exe">
<Output TaskParameter="Assemblies" ItemName="AssemblyVersion" />
</GetAssemblyIdentity>
<PropertyGroup>
<DefineConstants>BuildVersion=%(AssemblyVersion.Version)</DefineConstants>
</PropertyGroup>
</Target>
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
2013-09-25 21:58:56
To wygląda dość blisko tego, co próbujesz osiągnąć. Zobacz, jaki jest odpowiednik w tempomacie.
Http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/
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
2009-03-09 12:55:24