相关疑难解决方法(0)

在构建MSI文件(wix项目)时在文件名(OutputName)中包含MajorVersion等

在我的Defines.wxi中我有:

<?define MajorVersion="1" ?>
<?define MinorVersion="08" ?>
<?define BuildVersion="11" ?>
Run Code Online (Sandbox Code Playgroud)

在我的MyProject.Setup.wixproj中,我有:

<OutputName>MyProject</OutputName>
<OutputType>Package</OutputType>
Run Code Online (Sandbox Code Playgroud)

是否可以以某种方式在文件名中包含版本变量,以便我的文件可以命名为MyProject.1.08.11.msi?

这不起作用(没有定义这样的变量):

<OutputName>MyProject-$(MajorVersion)</OutputName>
<OutputType>Package</OutputType>
Run Code Online (Sandbox Code Playgroud)

这不起作用(没有定义这样的变量):

<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Release'">
    <Copy SourceFiles="$(OutputPath)$(OutputName).msi" DestinationFiles="C:\$(OutputName)-$(MajorVersion).msi" />
</Target>
Run Code Online (Sandbox Code Playgroud)

我觉得很清楚$(MajorVersion)不是从Defines.wxi文件中获取定义的正确方法.什么是?


更新

我试着把它放在MyProject.Setup.wixproj中:

<InstallerMajorVersion>7</InstallerMajorVersion>
<InstallerMinorVersion>7</InstallerMinorVersion>
<InstallerBuildNumber>7</InstallerBuildNumber>
Run Code Online (Sandbox Code Playgroud)

...

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <OutputPath>bin\$(Configuration)\</OutputPath>
    <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
    <DefineConstants>PrebuildPath=..\..\obj\prebuild\web\;InstallerMajorVersion=$(InstallerMajorVersion);InstallerMinorVersion=$(InstallerMinorVersion);InstallerBuildNumber=$(InstallerBuildNumber)</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

这在Defines.wxi中:

<?define MajorVersion="$(var.InstallerMajorVersion)" ?>
<?define MinorVersion="$(var.InstallerMinorVersion)" ?>
<?define BuildVersion="$(var.InstallerBuildNumber)" ?>
<?define Revision="0" ?>
<?define VersionNumber="$(var.InstallerMajorVersion).$(var.InstallerMinorVersion).$(var.InstallerBuildNumber)" ?>
Run Code Online (Sandbox Code Playgroud)

也没用.得到以下错误消息:

  • Product/@ Version属性的值'..'不是有效版本.合法版本值应该看起来像'xxxx',其中x是0到65534之间的整数.
  • 未找到Product/@ Version属性; 这是必需的.

msbuild windows-installer wix visual-studio-2010

22
推荐指数
5
解决办法
2万
查看次数

如何根据GitVersion属性命名我的WiX Installer项目的输出?

我最近开始使用GitVersion编写我的程序集,我喜欢它!

我喜欢生成一个.msi反映正在构建的产品版本的文件.到目前为止,我在我的.wixproj档案中使用了这个:

  <!-- [TPL] name the output file to include the version from theLocalServer assembly -->
  <Target Name="BeforeBuild">
    <GetAssemblyIdentity AssemblyFiles="$(SolutionDir)BuildOutput\$(Configuration)\TA.DigitalDomeworks.Server.exe">
      <Output TaskParameter="Assemblies" ItemName="AssemblyVersions" />
    </GetAssemblyIdentity>
    <CreateProperty Value="$(OutputName).%(AssemblyVersions.Version)">
      <Output TaskParameter="Value" PropertyName="TargetName" />
    </CreateProperty>
    <CreateProperty Value="$(TargetName)$(TargetExt)">
      <Output TaskParameter="Value" PropertyName="TargetFileName" />
    </CreateProperty>
    <CreateProperty Value="$(TargetDir)$(TargetFileName)">
      <Output TaskParameter="Value" PropertyName="TargetPath" />
    </CreateProperty>
  </Target>
Run Code Online (Sandbox Code Playgroud)

这将生成一个名为的输出文件:

TA.DigitalDomeworks.Installer.7.1.0.3.msi

我从这个答案中找到了这个解决方案,它引用了这篇博文.它7.1.0.3来自构建中的主程序集的程序集版本,而GitVersion在其自己的构建过程中对其进行了版本控制.

但是,我真正喜欢的是使用该FullSemVer属性,可以在这里看到:

C:\Users\Tim\source\repos\TA.DigitalDomeworks [release/7.1 ?1 +0 ~1 -0 !]> gitversion
{
  "Major":7,
  "Minor":1,
  "Patch":0,
  "PreReleaseTag":"beta.3", …
Run Code Online (Sandbox Code Playgroud)

msbuild wix gitversion

14
推荐指数
1
解决办法
458
查看次数