百科名片
ClickOnce 是一种部署技术,使用该技术可创建自行更新的基于 Windows 的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行。
ClickOnce 部署克服的主要问题
ClickOnce 部署克服了部署中所固有的三个主要问题:
更新应用程序的困难
使用 Microsoft Windows Installer 部署,每次应用程序更新,用户都必须重新安装整个应用程序;使用 ClickOnce 部署,则可以自动提供更新。只有更改过的应用程序部分才会被下载,然后从新的并行文件夹重新安装完整的、更新后的应用程序。
对用户的计算机的影响
使用 Windows Installer 部署时,应用程序通常依赖于共享组件,这便有可能发生版本冲突;而使用 ClickOnce 部署时,每个应用程序都是独立的,不会干扰其他应用程序。
安全权限
Windows Installer 部署要求管理员权限并且只允许受限制的用户安装;而 ClickOnce 部署允许非管理用户安装应用程序并仅授予应用程序所需要的那些代码访问安全权限。 过去,这些问题有时会使开发人员决定创建 Web 应用程序而不是基于 Windows 的应用程序,为便于安装而牺牲了 Windows 窗体丰富的用户界面和响应性。对于使用 ClickOnce 部署的应用程序,您可以集这两种技术的优势于一身。
ClickOnce 应用程序
什么是 ClickOnce 应用程序? 简单说来,ClickOnce 应用程序就是任何使用 ClickOnce 技术发布的 Windows 窗体或控制台应用程序。可以采用三种不同的方法发布 ClickOnce 应用程序:从网页发布、从网络文件共享发布或是从媒体(如 CD-ROM)发布。ClickOnce 应用程序既可以安装在最终用户的计算机上并在本地运行(即使当计算机脱机时也可以运行),也可以仅以联机模式运行,而不在最终用户的计算机上永久安装任何内容。有关更多信息,请参见选择 ClickOnce 部署策略。 ClickOnce 应用程序可以自行更新;这些应用程序可以在较新版本变为可用时检查较新版本,并自动替换所有更新的文件。开发人员可以指定更新行为;网络管理员也可以控制更新策略,如将更新标记为强制性的。最终用户或管理员还可以对更新进行回滚,使应用程序恢复到早期的版本。 因为 ClickOnce 应用程序在本质上是被隔离的,所以安装或运行 ClickOnce 应用程序不会干扰现有的应用程序。ClickOnce 应用程序是完全独立的;每个 ClickOnce 应用程序都安装到一个安全的基于每个用户、每个应用程序的缓存中,并从该缓存运行。默认情况下,ClickOnce 应用程序运行在 Internet 或 Intranet 安全区域中。如果有必要,应用程序可以请求提升的安全权限。 ClickOnce 部署 客户端点"安装"后无反应的处理办法: ClickOnce 部署方式在客户端是由此文件支持的 dfshim.dll.. 在.net 2.0 framework 安装时,与 .application文件类型相关联... 浏览器在下载 .application文件后,会由 dfshim.dll交由 dfsvc.exe 打开,我们就会看到ClickOnce的安装界面了..... 因此:若出现客户端点“安装”没有任何反应的情况,我们可以使用右键 另存为 功能下载 .application文件,然后选中.application文件使用右键 打开方式 选择 dfsvc.exe 打开此文件,即可进行客户端的安装....
VS2005生成时提示错误"无法在证书存储区中找到清单签名证书"
2010-04-19 15:33
第一种办法:打开项目对应csproj文件。将" <SignManifests>true</SignManifests> " 修改为 "<SignManifests>false</SignManifests>".
第二种办法:删除csproj文件中类似以下内容:<ManifestCertificateThumbprint>B531F2CF222748C5E29308FC2247704827D1EA8C</ManifestCertificateThumbprint> <ManifestKeyFile>xxxx_TemporaryKey.pfx</ManifestKeyFile> <GenerateManifests>true</GenerateManifests> <SignManifests>true</SignManifests> <PublishUrl>D:/xxx/bin/</PublishUrl> <Install>true</Install> <InstallFrom>Disk</InstallFrom> <UpdateEnabled>false</UpdateEnabled> <UpdateMode>Foreground</UpdateMode> <UpdateInterval>7</UpdateInterval> <UpdateIntervalUnits>Days</UpdateIntervalUnits> <UpdatePeriodically>false</UpdatePeriodically> <UpdateRequired>false</UpdateRequired> <MapFileExtensions>true</MapFileExtensions> <CreateWebPageOnPublish>false</CreateWebPageOnPublish> <ApplicationVersion>1.0.0.%2a</ApplicationVersion> <IsWebBootstrapper>false</IsWebBootstrapper> <BootstrapperEnabled>true</BootstrapperEnabled>
方法三:工程->属性->签名->为ClickOnce清单签名 去掉这个勾
方法四:在"签名"中选择"创建测试证书..."按钮,建一个证书即可
|
个人整理
C#的winform工程中属性中,签名项有“为ClickOnce清单签名”这一项,默认为有勾,打勾时在发布时可以进行自动更新。
但对应的证书只有约一年的有效期,如果有人环境问题,或过期了,则提示“无法在证书存储区中找到清单签名证书”。
解决方法,将勾去掉,则编译通过,以后打包时换能用的机器,再打勾发布即可。
网上介绍的VS2005下修改项目文件的方法,在"签名"中选择"创建测试证书..."按钮,建一个证书即可,
这个在多人开发下可能不行,因创建的证书在该人的本地。
以下内容,会被自动调整
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{FEE08A18-5B59-485F-9AAB-DCBD9C7AE0FE}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>LispClient</RootNamespace>
<AssemblyName>LispClient</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ManifestCertificateThumbprint>1B7CF9C627088AA4E8976B562DAF9FDEC2A3342F</ManifestCertificateThumbprint>
<ManifestKeyFile>LispClient_TemporaryKey.pfx</ManifestKeyFile>
<GenerateManifests>true</GenerateManifests>
<SignManifests>true</SignManifests>
另一人创建文件并指定后,本人从VSS获取,发现编译时,要求创建人的文件和密码,否则无法编译;密码输入正确后,仍然提示文件路径错误,可能创建时,提示签入时,我没有上传此文件,呵呵,不想再试,怕出错,且这个文件如何处理还需要有空再研究。
试验环境,VS2008.
应用程序自动更新的方法,个人总结并在本机上试验通过。
1、C#的winform工程中属性中,签名项有“为ClickOnce清单签名”这一项,默认为有勾,打勾时在发布时可以进行自动更新,故必须打勾。
2、属性的发布项
点击更新按钮,进入应用程序更新窗体
点击选项按钮,进入发布选项窗体
说明项,三个名称应该输入。
清单项,创建桌面快捷方式,打勾
该窗体其它内容,可以不用调整。
本人验证自动更新的方法
1、发布,安装
2、修改某个窗体,再发布
3、运行程序,提示有更新,是否安装
选择跳过,则不安装,且不再提示
选择更新确认,则自动更新程序。