Вы можете обновить OutputName вашего .wixproj и использовать переменную MSBuild для прохождения номера версии или любой другой переменной, которая вам нравится.
Мой сценарий сборки выглядит следующим образом:
set PRODUCTVERSION=7.1.0.1
MSBuild.exe /p:Configuration=Debug /p:ProductVersion=%PRODUCTVERSION% Installer.wixproj
И мой WiX проект выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>1.0.0.0</ProductVersion>
<ProjectGuid>{b7415c44-8d59-4ac2-b698-03e399a305e3}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>Installer.$(ProductVersion)</OutputName>
...
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
<WixVariables>ProductVersion=$(ProductVersion)</WixVariables>
</PropertyGroup>
...
</Project>
Выход будет:
Installer.7.1.0.1.msi
Хорошо, это сработало бы. Я попробую это. Но я искал более прямой путь - или вы думаете, что это не поддерживается в wix? Я читал что-то о переменных-линкерах здесь: http://n2.nabble.com/Types-of-variables-question-td3825142.html ! (Wix.Name) получает так называемые WixVariables (может быть определен в исходном коде с элементом WixVariable или передан в командной строке света и/или , который горит таким же образом, как переменные препроцессора передаются свечи). Но это не работает. – Jan
Я упомянул об этом, так как это самый быстрый и простой способ справиться с этим. Как и многие другие проблемы с разработкой, всегда помните KISS. –
Переименование MSI - плохая идея. Не делай этого! http://blogs.msdn.com/b/robmen/archive/2004/12/08/278746.aspx – l33t