当前位置:  开发笔记 > 编程语言 > 正文

如何在启动时运行Click-once部署的应用程序?

如何解决《如何在启动时运行Click-once部署的应用程序?》经验,为你挑选了3个好方法。

如何使Click-once部署的应用程序运行启动?

我通过搜索找到的最佳选项是将应用程序上的Publisher设置为Startup,因此Start菜单快捷方式将放在Startup文件夹中,但这似乎是一个巨大的黑客,我希望有一个开始菜单图标人可以找到.

我有什么选择?



1> Don Scott..:

我觉得将您的应用程序添加到启动文件夹是不专业的.我强烈建议使用启动注册表项来启动您的应用程序.

与此主题的许多材料相反,设置密钥以在应用程序启动单击时非常简单,并且不需要设置其他快捷方式.您只需使用在安装时创建的快捷方式:

// The path to the key where Windows looks for startup applications
RegistryKey rkApp = Registry.CurrentUser.OpenSubKey(
                    @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);

//Path to launch shortcut
string startPath = Environment.GetFolderPath(Environment.SpecialFolder.Programs) 
                   + @"\YourPublisher\YourSuite\YourProduct.appref-ms";

rkApp.SetValue("YourProduct", startPath);



2> DiscDev..:

在阅读了上述线程和上面提到的johnnycoder博客文章的所有评论之后,我想出了一个解决方案:

    将ClickOnce应用程序添加到Startup文件夹

    卸载ClickOnce应用程序时(重启或注销/登录后)自动删除启动项

    经过测试,适用于Windows XP,Windows 7,Windows Server 2000/2003,Windows 8

我的解决方案

基本上,您的应用程序将把.bat文件写入Startup文件夹,为您启动ClickOnce应用程序.该.bat文件足够智能,可以检测应用程序是否已卸载,如果找不到ClickOnce应用程序,该文件将自行删除.

步骤1

获取批处理文件.将PUBLISHER_NAME和APPLICATION_NAME替换为正确的值.您可以通过安装ClickOnce应用程序找到它们,然后按照文件系统上的路径进行操作:

@echo off

IF EXIST "%appdata%\Microsoft\Windows\Start Menu\Programs\PUBLISHER_NAME\APPLICATION_NAME.appref-ms" (
"%appdata%\Microsoft\Windows\Start Menu\Programs\PUBLISHER_NAME\APPLICATION_NAME.appref-ms"
) ELSE (start /b "" cmd /c del "%~f0"&exit /b)

批处理文件将检查您的ClickOnce应用程序是否已安装(通过查看appref-ms文件是否存在)并启动它(如果存在).否则,批处理文件将通过此处概述的方法删除自身.

现在您已拥有批处理文件,请将其测试出来.将其放在Startup文件夹中,以确保它在登录时启动您的应用程序.

第2步

现在,在应用程序的代码中,您需要将此批处理文件写入Startup文件夹.下面是在C#中使用上面的批处理文件的示例(请注意,有一些转义,环境变量voodoo正在发生):

string[] mystrings = new string[] { @"@echo off

IF EXIST ""%appdata%\Microsoft\Windows\Start Menu\Programs\PUBLISHER_NAME\APPLICATION_NAME.appref-ms"" (
""%appdata%\Microsoft\Windows\Start Menu\Programs\PUBLISHER_NAME\APPLICATION_NAME.appref-ms""
) ELSE (start /b """" cmd /c del ""%~f0""&exit /b)"};

string fullPath = "%appdata%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\StartMyClickOnceApp.bat";

//Expands the %appdata% path and writes the file to the Startup folder
System.IO.File.WriteAllLines(Environment.ExpandEnvironmentVariables(fullPath), mystrings);

你有它.欢迎评论/改进.

编辑:修正了第2步中的引号



3> 小智..:

不幸的是,所有这些技巧都不适用于Vista.出于某些原因,Vista会在启动时阻止这些程序.

正如@thijs所建议的那样,你可以轻松地绕过vista的"安全性".请参阅blogpost,了解如何在Windows启动时运行clickonce应用程序.


您可以轻松地绕过vista的"安全性",请参阅我的博客文章,了解如何在Windows启动时运行clickonce应用程序:http://www.brokenwire.net/bw/Programming/116/run-clickonce-app-on-startup
@thijs你提供的链接坏了!
推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有