### ClickOnce与桌面快捷图标创建 #### 一、ClickOnce简介 ClickOnce是Microsoft提供的一种部署技术,允许用户轻松地将应用程序部署到用户的计算机上。它最初是在.NET Framework 2.0中引入的,旨在简化应用程序的安装和更新过程。通过ClickOnce部署的应用程序可以自动检查更新,并且在有新版本时进行无缝升级。 #### 二、ClickOnce创建桌面快捷图标的方法 本文主要介绍了如何使用C#中的ClickOnce技术来创建桌面快捷图标,以便于用户能够方便地启动应用。下面将详细介绍实现这一功能的具体步骤和代码示例。 #### 三、创建桌面快捷图标的实现逻辑 ##### 3.1 确定首次运行 为了确保桌面快捷图标只在首次安装或更新后出现,我们需要判断当前是否为首次运行。这可以通过调用`ApplicationDeployment.CurrentDeployment.IsFirstRun`属性来实现。如果返回值为`true`,则表示这是首次运行。 ##### 3.2 获取程序公司信息 接下来,我们需要获取应用程序的公司信息,这将用于确定程序的安装路径。可以通过反射的方式获取到`AssemblyCompanyAttribute`属性: ```csharp string company = string.Empty; if (Attribute.IsDefined(code, typeof(AssemblyCompanyAttribute))) { AssemblyCompanyAttribute asCompany = (AssemblyCompanyAttribute)Attribute.GetCustomAttribute(code, typeof(AssemblyCompanyAttribute)); company = asCompany.Company; } ``` 其中`code`变量为当前执行的程序集(`Assembly.GetExecutingAssembly()`)。 ##### 3.3 构建快捷方式路径 根据获取到的公司名称,我们可以构建出存放快捷方式的文件夹路径。通常情况下,这个路径位于“所有程序”菜单下的公司名称文件夹内: ```csharp string sourcePath = string.Concat(Environment.GetFolderPath(Environment.SpecialFolder.Programs), "\\", company); ``` 同时,也需要获取到桌面的路径,以便于创建桌面快捷方式: ```csharp string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); ``` ##### 3.4 复制快捷方式至桌面 最后一步是将程序的快捷方式复制到桌面上。首先需要查找在“所有程序”菜单下对应的`.appref-ms`文件,然后将其复制到桌面上: ```csharp string[] files = System.IO.Directory.GetFiles(sourcePath, "*.appref-ms"); foreach (string file in files) { System.IO.FileInfo fl = new System.IO.FileInfo(file); string desktopPath = string.Concat(desktop, "\\", fl.Name); if (System.IO.File.Exists(desktopPath)) { System.IO.File.Delete(desktopPath); } System.IO.File.Copy(file, desktopPath, true); } ``` 这段代码首先遍历了所有的`.appref-ms`文件,并将它们复制到了桌面。需要注意的是,如果之前存在同名文件,则会先删除后再进行复制操作。 #### 四、注意事项 1. **权限问题**:在Windows Vista及更高版本的操作系统中,可能需要管理员权限才能成功创建桌面快捷方式。 2. **兼容性问题**:不同的操作系统版本可能对`.appref-ms`文件的支持程度不同,因此在实际部署时需注意测试兼容性。 3. **用户体验**:虽然自动生成桌面快捷图标可以提高用户体验,但也可能会引起部分用户的反感,因此最好提供一个选项让用户能够选择是否创建桌面图标。 #### 五、总结 本文介绍了如何利用ClickOnce技术创建桌面快捷图标的方法。通过判断是否首次运行、获取程序的公司信息、构建快捷方式路径以及复制快捷方式至桌面等步骤,我们可以在应用程序安装或更新时自动创建桌面快捷图标,从而提高了用户体验并简化了应用程序的部署流程。
- 小小小小酋长2023-02-08东西很实在,谢谢作者的分享,感激
- TangZhongxin2012-06-17ClickOnce的限制,别再折腾了,还是要用正统的方法。没图标就没图标算了,又想自制安装包有快捷方式又装在程序文件夹,又想自动更新,都得自己写了。
- Loocm2012-08-16ClickOnce的限制,别再折腾了,还是要用正统的方法。没图标就没图标算了
- liuxing198706292012-07-16不得行,没用,不晓得是不是win7的原因。
- 粉丝: 44
- 资源: 28
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助