【发布时间】:2014-07-28 08:50:29
【问题描述】:
我有一个相当老的 Windows Forms 应用程序,我目前正在尝试为其构建 ClickOnce 安装程序。
一切都很好,除了从应用程序内部访问 ApplicationDeployment.CurrentDeployment 的任何尝试都会导致:
未设置应用程序标识。
我在网络上发现了很多此类帖子,尤其是在 StackOverflow 上,但人们在调试器下运行他们的应用程序,或者根本不是网络部署的本地版本。
我强调,在我的例子中,应用程序是网络部署的(可离线使用)。我通过单击由 ClickOnce 安装程序创建的桌面图标来运行它。更新工作正常(尝试发布更新以确保其正常工作)。
但是,ApplicationDeployment.CurrentDeployment 不可访问。
我做错了什么?
事实上,我只是想读取出现在“程序和功能”小程序中的应用程序版本。有没有办法在不使用 ClickOnce API 的情况下读取这些信息,例如,直接从注册表(我知道这不好)。
代码很简单:
[STAThread]
static void Main(string[] argv)
{
System.Windows.Forms.MessageBox.Show(ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString()); // Crash here
DoSomethingUseful();
}
【问题讨论】:
-
您应该检查应用程序是否是网络部署的!即使您认为这不是您的问题的一部分。这样做是为了获得最佳实践。
-
仅供参考添加到@Herdo 评论。 ApplicationDeployment.IsNetworkDeployed docs.microsoft.com/en-us/dotnet/api/…
标签: c# deployment installation clickonce