Deb*_*ata 2 wpf wix bootstrapper
我有一个 wpf 项目,其安装程序是由 wix 安装项目创建的。wix 安装项目被编译以获取 .msi。.exe 是使用 wix bootstrapper 项目从 .msi 文件生成的。现在我的问题是如何从 wpf .cs 文件获取程序集版本 [ assembly: AssemblyFileVersion("xxxxx")] ?
Andy 是对的,您将无法从 .cs 文件中提取版本号,因为 WiX 不会编译或不知道与 C# 代码有关的任何内容。
您想要做的是使用程序集版本属性对主可执行文件(可能是 .csproj 应用程序)进行版本控制。(这些可以在项目属性中找到)
1) 在Product.wxs中将所述主要可执行文件添加为安装程序中的文件。
<Component Id='MainExecutable' Guid='*'>
<File Id='MainExe' Name='MainExe.exe' Source='Path-to-exe' KeyPath='yes' />
</Component>
Run Code Online (Sandbox Code Playgroud)
2) 将 .msi 的版本绑定到该主可执行文件。这是在Product元素的Version属性中完成的。
<Product Id="*" Name="My Product Name" Language="1033" Version="!(bind.FileVersion.MainExe)" Manufacturer="Debabrata" UpgradeCode="PUT-GUID-HERE">
Run Code Online (Sandbox Code Playgroud)
并不是说 FileVersion 之后的值是文件的 ID。这个很重要。
现在在引导程序项目中使用此版本号 - 过程非常相似。
1) 将 MSI 添加到引导程序中。
<MsiPackage SourceFile="Path-to-msi" Id="MyMSI">
Run Code Online (Sandbox Code Playgroud)
2)绑定应该在Bundle元素的Version属性中。
<Bundle Name="My Bundle" Version="!(bind.packageVersion.MyMSI)">
Run Code Online (Sandbox Code Playgroud)
再次注意 ID 的匹配方式。
希望这可以帮助!