安装ClickOnce而不运行

时间:2009-02-04 22:53:55

标签: vb.net deployment clickonce

安装ClickOnce应用程序时,程序会在安装后运行。是否可以在没有运行的情况下安装

我知道我可以使用设置和部署项目并创建安装程序,但我更喜欢使用ClickOnce。

4 个答案:

答案 0 :(得分:8)

要在安装后禁用自动启动,您只需按照MSDN文章 How to: Disable URL Activation of ClickOnce Applications (使用工具MageUI.exe)中的说明禁用URL激活。

  

禁用应用程序的URL激活

     
      
  • 选择“部署选项”选项卡。

  •   
  • 清除安装后自动运行应用程序复选框。

  •   
  • 保存并签署清单。

  •   

答案 1 :(得分:4)

我想你可以假装它。引入“IsInstalled”布尔属性,默认为false。然后在Program.cs中,将Main()方法更改为如下所示:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    if (!Properties.Settings.Default.IsInstalled)
    {
        Properties.Settings.Default.IsInstalled = true;
        Properties.Settings.Default.Save();

        MessageBox.Show("Install Complete");
        return;
    }

    Application.Run(new Form1());
}

所以现在首次安装应用程序时,它会检查该属性,只是向用户显示一条消息,然后退出。

如果您想变得棘手,那么您可以查看解析部署的激活URI并使用URI参数指定程序在首次安装时是运行还是静默关闭。

答案 2 :(得分:0)

您可以通过编辑Mage中的应用程序清单来执行此操作。安装后有一个复选框可以阻止应用程序运行。

如果您不方便手动或使用Mage编辑清单,则可以使用内置部署类来检查这是否是第一次运行应用程序。

using System.Deployment.Application

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    if (ApplicationDeployment.CurrentDeployment.IsFirstRun)
    {
        MessageBox.Show("Install Complete");
        return;
    }

    Application.Run(new Form1());
}

答案 3 :(得分:0)

在尝试了所有建议的解决方案并仍然遇到相同的问题之后,我花了一段时间来弄弄这个问题,并将几种解决方案组合到一个实际上有效的解决方案。

仅设置“ isInstalled”属性的问题是升级后会保留该值,因此,每次安装新版本时,它将再次运行该应用程序。但是,使用应用程序清单文件和Mage只是为了解决这个小问题而做的工作太多而且太复杂。

所以我要做的是获取应用程序运行版本的当前内部版本号,将其保存到属性中,然后每次针对运行版本检查该属性。之所以有效,是因为每次发布都会增加版本号。

1)更改您的Assembly版本以在AssemblyInfo.cs中使用通配符:

[assembly: AssemblyVersion("1.0.*")]

2)如果在Build上引发“确定性”错误,请打开.csproj文件,并在“属性组”部分中将“确定性”设置为 false

<Deterministic>false</Deterministic>

3)添加此简单功能以获取正在运行的程序集版本:

private Version GetRunningVersion()
{
    try
    {
        return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion;
    }
    catch
    {
        return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
    }
}

4)在项目的属性中,打开“设置”选项卡,并添加名为 lastVersion (字符串,用户)的设置。将该值留空。

5)添加此属性以用于确定这是否是应用程序在安装后第一次运行。

private bool isFirstRun
{
    get { return Properties.Settings.Default.lastVersion != GetRunningVersion().ToString(); }
}

6)然后在您的代码中,在检查isFirstRun之后添加此

if (isFirstRun)
{
    Properties.Settings.Default.lastVersion = GetRunningVersion().ToString();
    Properties.Settings.Default.Save();
}