现在,在我们的一个WiX安装程序中,我们明确定义了产品版本字符串,如下所示:
<?define ProductVersion="1.2.3"?>
Run Code Online (Sandbox Code Playgroud)
我们也在另一个表单的标题中使用相同的版本号,下面是一个非常简单的示例,说明如何应用它:
public partial class frmMain : Form
{
// assume the designer code is all properly generated
private const string VERSION = "1.2.3";
public frmMain()
{
InitializeComponent();
this.Text += string.Format(" v{0}", VERSION);
}
}
Run Code Online (Sandbox Code Playgroud)
这看起来很笨重,我认为没有必要在两个地方更新我们的产品版本.哪里是存储版本字符串信息的最佳位置,所以我只需要在一个地方更新它,只需从表单和安装程序中引用这些数据?
请注意,在这种情况下,产品版本与装配版本不匹配.
C#没有像C/C++和WiX工具集那样的预处理器,所以你不能做明显的事情并通过那条路径传递版本.如果产品版本与程序集文件版本匹配,那么您可以执行以下操作:
<Product Version='!(bind.fileVersion.FileIdOfAssembly)'>
Run Code Online (Sandbox Code Playgroud)
如果文件版本可以匹配,这将是理想的.如果没有,那么剩下的唯一选择是在安装时写一些东西并在运行时读取它.例如:
<RegistryValue Root='HKLM'
Path='SOFTWARE\!(bind.property.Manufacturer)\!(bind.property.ProductName)'
Name='Version' Value='!(bind.property.ProductVersion)' Type='string' />
Run Code Online (Sandbox Code Playgroud)
然后在你的frmMain()中读取该注册表项.不确定它是否值得应用程序的额外复杂性,因为您现在拥有简单,强大的解决方案.
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |