相关疑难解决方法(0)

如何将WiX安装程序版本设置为当前版本?

我编写了一个应用程序及其WiX安装程序,并使用subversion将其置于版本控制之下.当WiX安装程序构建时,我希望其版本号是应用程序的当前构建版本.我该如何做到这一点?我使用c#来编写应用程序代码.

NB我正在使用ccnet来构建这个项目

c# svn wix

125
推荐指数
6
解决办法
6万
查看次数

WIX:如何动态设置msi输出文件的名称

我想在wix项目生成的msi文件的文件名中包含一些动态部分.这个动态部分应该由变量控制,这些变量是我的wix项目的一部分,并且声明如下:

<?define ProductVersion="7.1.0.1" ?>
Run Code Online (Sandbox Code Playgroud)

有没有人知道将wix变量的值发送给链接器以将其用作输出文件名的一部分的方法?

顺便说一下:我正在使用Wix3

variables installation windows-installer wix

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

从WiX设置项目引用WiX库项目中定义的WixVariable

我正在尝试配置WiX设置和库,以便将库中某个文件的版本用作设置中的Product/@ Version.

背景

在本地定义文件的设置中,这是相对简单的,假设组件项目由WiX项目引用然后配置:

  <Component Id="Company.Assembly" Guid="[GUID]">
    <File Id="Company.AssemblyFile"
          Name="Company.Assembly.dll" KeyPath="yes"
          DiskId="1"
          Source="$(var.Company.Assembly.TargetPath)" />
  </Component>
Run Code Online (Sandbox Code Playgroud)

然后可以将产品版本设置为

  <Product Id="[GUID]"
           Name="Product Name"
           Language="1033"
           Version="!(bind.FileVersion.$(var.Company.AssemblyFile
                    .TargetFileName))"
           Manufacturer="Company Name"
           UpgradeCode="[GUID]">
Run Code Online (Sandbox Code Playgroud)

问题

因此,将所有组件移动到WiX库项目后,就不再可能直接引用该!(bind.FileVersion.$(var.Company.AssemblyFile.TargetFileName))变量.

我已经尝试在库中配置WixVariable

WixVariable Id="BuildVersion" Value="!(bind.FileVersion.Company.AssemblyFile)"/>
Run Code Online (Sandbox Code Playgroud)

然后从设置中引用它

  <Product Id="[GUID]"
           Name="Product Name"
           Language="1033"
           Version="!(wix.BuildVersion)"
           Manufacturer="Company Name"
           UpgradeCode="[GUID]">
Run Code Online (Sandbox Code Playgroud)

没有成功.

库或设置中是否需要一些额外的步骤或语法才能从设置中访问WixVariable(或某些派生)?

wix wix3.5

23
推荐指数
1
解决办法
1万
查看次数

根据VS活动配置定义Wix属性和值

如何根据哪个Visual Studio配置处于活动状态来定义更改的Wix属性和值?例如,对于我们的发布版本,var x = 1,对于导出构建,var x = 2.

wix wix3

12
推荐指数
2
解决办法
6950
查看次数

从MSBuild中的AssemblyInfo访问版本

我想创建/通过Visual Studio生成过程中推动NuGet包的解释在这里.

建筑包很容易:

<Exec WorkingDirectory="$(ProjectDir)" Command="$(NuGetApp) pack $(ProjectFile) -OutputDirectory $(Deploy) -Verbose -Prop Configuration=Release"/>
Run Code Online (Sandbox Code Playgroud)

我在$(Deploy)文件夹中看到.nupkg文件.

但是为了能够推动它,我需要$(AssemblyVersion)来使用它:

<Exec Command="$(NuGetApp) push $(ProjectName)$(AssemblyVersion) -s $(NugetServer) $(NugetKey)" />
Run Code Online (Sandbox Code Playgroud)

我尝试使用XMLRead来获取值,但NugetSpecFile中的值是"$ version $"而不是AssemblyInfo.cs中的版本.

<XmlRead XPath="/package/metadata/version" XmlFileName="$(NuSpecFile)">
      <Output TaskParameter="Value" PropertyName="AssemblyVersion" />
    </XmlRead>
Run Code Online (Sandbox Code Playgroud)

如何访问版本,以便在"nuget push"中使用它?

msbuild assemblyinfo nuget-package

10
推荐指数
1
解决办法
5821
查看次数

从MSBUILD脚本获取次要版本和主要版本

我正在使用Msbuild来编译和生成.zip文件和安装程序,我需要我的assembyInfo的版本号.

我正在使用此代码.

<Target Name="getversion">
    <GetAssemblyIdentity AssemblyFiles="$(BuildDir)\myprogram.exe">
        <Output TaskParameter="Assemblies" ItemName="fooAssemblyInfo"/>
    </GetAssemblyIdentity>
    <Message Text="Version = %(fooAssemblyInfo.Version)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

但这会返回Version = 2.0.0.29110,我只需要次要和主要版本.

有没有办法在没有自定义任务的情况下读取assembyInfo.cs信息?

.net msbuild assemblyinfo

7
推荐指数
3
解决办法
7175
查看次数

在Project Extensions中使用Msbuild变量

我目前有一个web.api项目的解决方案,我希望将其部署到本地IIS中的不同虚拟目录.目前我在api的.csproj中执行以下操作:

<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)' == 'CustomerOne.Debug'">
    <CustomerName>CustomerOne</CustomerName>
    ....
</PropertyGroup>
...
Run Code Online (Sandbox Code Playgroud)

通过引用它们,可以进一步广泛地使用这些变量进行web.config转换,复制到不同的位置等$(CustomerName).

唯一不起作用的地方是虚拟目录的定义,即我想将构建配置连接到IISUrl下面,你可以硬编码:

<ProjectExtensions>
  <VisualStudio>
    <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
      <WebProjectProperties>
        ...
        <IISUrl>http://localhost/api/something</IISUrl>
        ...
      </WebProjectProperties>
    </FlavorProperties>
  </VisualStudio>
</ProjectExtensions>
Run Code Online (Sandbox Code Playgroud)

替换<IISUrl>http://localhost/api/$(CustomerName)</IISUrl>它不起作用.想法?

c# asp.net msbuild visual-studio asp.net-web-api

5
推荐指数
1
解决办法
242
查看次数

在 WiX 中向构建后事件添加版本

我是 WiX 的新手,在实现我认为应该非常简单的事情时遇到了一些困难。我在 Visual Studio 2013 中使用 WiX v3.8。总的来说,我想要实现的目标是拥有一个可以更改安装程序版本的地方,并且这将在整个 WiX 项目中传播。

在 WiX 项目的项目属性 =>“构建”选项卡 =>“定义预处理器变量”文本框中,我有: ProjectVersion=3.6.7.0

但是,当失败时,我遇到问题的是构建后事件:

copy !(TargetPath) "C:\Development\Release Builds\MyProject\$(TargetName) $(var.ProjectVersion)$(TargetExt)"

我一直在互联网上搜索,但无法找到解决我的问题的方法。也许我只是不知道该问什么?

我的问题是:如何使这个构建后活动正常进行?我究竟做错了什么?我想做的就是能够轻松更改 ProjectVersion 变量或构建后事件中的另一个此类变量。

wix visual-studio

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