我有一个产品,客户期望3件版本号如1.2.3,但在内部我们使用1.2.3.4。版本在Wix安装程序中自动设置,那么如何删除最后一个数字(4)?
上下文
示例'4'中的最后一个数字是自动生成的subversion提交号。我们的客户不希望看到“版本5.6.1.7654”,但希望看到“版本5.6.1”。这就是我们市场的本质。我们在帮助中显示完整的数字关于对话框。
实施
在Wix XML中我们有:
<?define ProductVersion="!(bind.FileVersion.MyExe)" ?>
:
<Product
:
Version="$(var.ProductVersion)"
:
如何将$(var.ProductVersion)从X.X.X.X格式化为X.X.X?
提前致谢
罗布
答案 0 :(得分:1)
有一个特殊的汇编属性,AssemblyInformationalVersion
。这将是最好的选择,因为它还允许您指定文本,例如“Release 5.6.1 RC1”。
但是,我不确定WIX toolset support it yet。
您可以做的另一件事是在项目/解决方案中使用全局AssemblyInfo.cs
技术。定义该文件中的AssemblyVersion
和AssemblyFileVersion
,以便将它们呈现给用户并在其他程序集上继续使用4阶段增量内部版本号。
答案 1 :(得分:0)
您可以使用预处理器而不是活页夹完成所有这些操作。这就是我如何做到这一点。我编写了一个预处理器扩展,它将版本号(字符串)作为参数并返回一个新的。所以你可以这样做,例如:
switch (function)
{
case "TruncateVersion":
// validate version number here
return args[0].Substring(0, args[0].LastIndexOf('.'));
}
以下是有关如何扩展预处理器的链接:http://wix.sourceforge.net/manual-wix3/extension_development_preprocessor.htm
然后,您可以使用$(version.TruncateVersion($(var.MyProject.TargetPath)))
获取版本号。
当然,这只是路径。您可以使用FileVersionInfo
类提取文件版本,也可以直接从AssemblyInfo.cs文件中获取文件版本。
或者,如果你宁愿在绑定时完成工作,你可以写一个活页夹扩展名。不幸的是,目前WiX扩展文档记录很少,只有预处理器似乎有一个完整的,有文档记录的例子。虽然我已经在这里和那里看到过Heat扩展片段。
通过查看WiX源代码或搜索网络,随意证明我的错误。祝你好运!
修改强>
忘了提。您不能使用以下语法:
$(version.TruncateVersion(!(bind.fileVersion.FileID)))
这是因为预处理器变量(从&#39; $&#39; 开始)在绑定变量由绑定器解析之前解析 &#39;!&#39;
但是,您可以这样做:!(bind.fileVersion。$(var.MyProject.TargetPath))
答案 2 :(得分:0)
最简单的方法是在项目中使用assemblyversionInfo并使用此文件中的版本号