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

Jus*_*tin 1 wix visual-studio

我是 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 变量或构建后事件中的另一个此类变量。

jme*_*hus 5

这并不完全是您所要求的,但也许它可以帮助您实现您想要的?

我的做法与你的做法略有不同。我从与 wix 安装程序捆绑在一起的“主”程序集中读取版本,重命名 msi 文件名以包含版本字符串,然后在构建后事件中对其进行签名。

资源:

/sf/answers/1355988021/

/sf/answers/862663931/

要重命名 msi 以在文件名 (wixproj) 中包含版本:

<Target Name="BeforeBuild">
    <GetAssemblyIdentity AssemblyFiles="$(SolutionDir)'HARDCODED PATH'\bin\$(Configuration)\'HARDCODED NAME OF ASSEMBLY'">
        <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)

要在重命名后签署 msi (wixproj):

<PropertyGroup>
    <PostBuildEvent>"C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" sign /sha1 'CERTIFICATEHASH' /v /t http://timestamp.verisign.com/scripts/timstamp.dll /d "DESCRIPTION" "$(ProjectDir)\bin\$(ConfigurationName)\'HARCODED PARTIAL MSI NAME'@(AssemblyVersions->'%(Version)').msi"</PostBuildEvent>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

在 wixproj 文件中手动添加/编辑此构建后事件非常重要(使用编辑器),如果您使用 GUI,它会搞砸:

@(AssemblyVersions->'%(Version)')
Run Code Online (Sandbox Code Playgroud)

另外,如果您想签署 MSI,请确保添加 MSI 的描述,否则 UAC 提示将显示临时文件名。资源: http: //kentie.net/article/wixtipstricks/