当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何将WiX安装程序版本设置为当前版本?》经验,为你挑选了4个好方法。

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

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



1> Rob Menschin..:

你可以使用产品/ @版本="!(bind.FileVersion.FileId)"(替换FileIdId的文件,从中你想要得到的版本号),并light.exe将的版本填充值文件引用的FileId.


请注意,"Fileid"应该是元素中的值,并且显然可以包含点(.)字符.
是的,对不起,我犯了不断的精神错误.$是预处理器变量而且!是活页夹变量.
是否可以为bundle/bootstrapper执行此操作?
相关文档的链接,部分:[Binder变量](http://wixtoolset.org/documentation/manual/v3/overview/light.html)
正是我在寻找的!虽然我不得不使用"!(bind.FileVersion.FileId)"(一个"!"而不是"$"),否则我得到一个预处理器指令错误.
Binder变量应该在WiX文档中具有更高的可见性.我花了几个小时来处理预处理器变量,我现在可以用两个简单的Binder变量替换它们.

2> Chris Kaczor..:

我在我的一个项目中通过编写预处理器扩展来从可执行文件中读取文件版本.所以WiX文件看起来像:





我在CodePlex上发布了代码:http: //wixfileversionext.codeplex.com/


为此+1 ...我在每次安装时都使用它.
@Gigo我通过`<?define ProductName ="!(bind.property.ProductName)"?> <?define CompanyName ="!(bind.property.Manufacturer)"?> <?define ProductVersion =!(bind .FileVersion.FileId)?>```FileId`是`Component`中你的一个`File`元素的`Id`属性的值.

3> K0D4..:

如果有人正在寻找一个实际的XML示例,这适用于.NET程序集(并且您不必执行Assembly或KeyPath属性).我与[...]占位符取消了不相关的代码:


    
        [...]
        
            
                
                    
                        
                        [...]
                    
                    [...]
                
            
        
    



4> Brock Hensle..:

这是一个非常简单的方法,让你的Bootstrapper Bundle版本与你的MyApp AssemblyVersion匹配使用BeforeBuild TargetDefineConstants.

Bundle.wxs:



Bootstrapper.wixproj:


  
    
  
  
    BuildVersion=%(AssemblyVersion.Version)
  


错误LGHT0298:未解析的绑定时变量
我尝试了这个并且不能推荐这个 - 将它与TeamCity的装配修补器结合起来,你就有了一个成功的公式.我没有使用Bundle元素,而是使用产品元素,但仍然适用于我.
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有