我想在我的应用程序中显示一个新的表单。但是,我需要检测它是新安装还是升级。
我正在使用以下代码升级设置:
if (Properties.Settings.Default.settingsUpgrade)
{
WhatsNew WhatsNew = new WhatsNew();
WhatsNew.Show();
WhatsNew.BringToFront();
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.settingsUpgrade = false;
Properties.Settings.Default.Save();
}
默认情况下,Properties.Settings.Default.settingsUpgrade
设置为True
。但是,即使安装了新代码,此代码也会始终显示Whats New表单。
Properties.Settings.Default.Upgrade();
没有事件或在实际需要升级时触发的事情,所以我不知道是否有以前的版本(因此显示Whats New表格)。我如何知道是否有以前的版本?
答案 0 :(得分:2)
我使用GetPreviousVersion(string property);
完成了此操作。缺点是在以前的版本中需要设置(但在我的情况下,它不是问题 - 即使第一个版本至少有一个设置)。
if (Properties.Settings.Default.settingsUpgrade)
{
Object PrevVersion = Properties.Settings.Default.GetPreviousVersion("tooltipDisplay");
if (PrevVersion != null)
{
WhatsNew WhatsNew = new WhatsNew();
WhatsNew.Show();
WhatsNew.BringToFront();
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.settingsUpgrade = false;
Properties.Settings.Default.Save();
}
}
此代码将检查是否找到先前的配置,如果对象PrevVersion
将不会设置为null
。
答案 1 :(得分:1)
您可以尝试创建名为 currentVersion 的设置,该设置从空开始,并将其与应用程序的当前程序集版本进行比较。像这样:
if (Properties.Settings.Default.settingsUpgrade)
{
Properties.Settings.Default.Upgrade();
string strVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
string installedVersion = Properties.Settings.Default.installedVersion;
if (!string.IsNullOrEmpty(installedVersion) && installedVersion != strVersion)
{
WhatsNew WhatsNew = new WhatsNew();
WhatsNew.Show();
WhatsNew.BringToFront();
}
Properties.Settings.Default.installedVersion = strVersion;
Properties.Settings.Default.settingsUpgrade = false;
Properties.Settings.Default.Save();
}
这应该可以为您提供每个新版本应用程序的更新程序集版本。 我的示例中的版本比较显然非常简单,并且如果它们降级以及升级时也会导致显示新内容,但是应该可以直接修复它。
编辑:我已更新代码以解决一些问题。基本上,在尝试获取旧版本号之前,调用Properties.Settings.Default.Upgrade()来获取用户设置。
答案 2 :(得分:0)
尝试使用全局可访问资源,例如系统注册表。 将当前“已安装”(如果是独立的,未实际安装的)版本号放置在某个地方,其他任何程序都可以读取它。