ClickOnce,无法在证书存储区中找到清单签名证书的错误提示,应用程序自动更新的方法总结。

ClickOnce是一种部署技术,用于创建能够自动更新的Windows应用程序。它解决了传统部署方式中的更新难题、应用间冲突及权限问题。文章介绍了ClickOnce部署的三大优势,并详细解释了如何通过设置实现应用程序的自动更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

百科名片

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、属性的发布项
  • 发布文件夹位置,选择本地文件夹,或网址如 http://localhost/mysetup/,说明,发布时会将安装文件生成在此位置。
  • 安装文件夹url,为空。
  • 安装模式和设置项,选可以脱机使用。
  • 发布版本,注意要递增。
点击更新按钮,进入应用程序更新窗体
  • 应用程序应该检查更新,打勾。
  • 何时检查更新,选择运行前。
  • 更新位置,指定一个网站地址,如 http://localhost/mysetup/

点击选项按钮,进入发布选项窗体

说明项,三个名称应该输入。

清单项,创建桌面快捷方式,打勾

该窗体其它内容,可以不用调整。

 

本人验证自动更新的方法

1、发布,安装

2、修改某个窗体,再发布

3、运行程序,提示有更新,是否安装

选择跳过,则不安装,且不再提示

选择更新确认,则自动更新程序。

 

 

<think>我们正在解决VSTO项目在Visual Studio中运行正常但无法安装(部署失败)的问题。根据引用内容,我们可以从以下几个方面入手: 1. **配置信任机制**(引用[1]):VSTO插件需要被注册为受信任的加载项,否则安装时会弹出提示且可能失败。 2. **注册表设置**(引用[3]):检查LoadBehavior注册表项,确保其值为3(启动时自动加载)。 3. **调试和分析工具**(引用[4]):利用Visual Studio的调试功能排查问题。 4. **安装和部署步骤**(引用[2]和[5]):确保安装过程正确,包括创建快捷方式等。 ### 解决方案步骤: #### 1. **配置VSTO插件信任机制** - 在客户端计算机上,必须将VSTO插件配置为受信任。可以通过以下方式: - 使用证书对插件进行签名,并将该证书添加到客户机的受信任发布者列表中。 - 或者,通过组策略设置信任位置(如网络共享或网站)[^1]。 - 具体操作: - 打开Internet选项 → 安全 → 本地Intranet/受信任的站点 → 自定义级别 → 设置“初始化未标记为安全的ActiveX控件”为启用,并启用“下载未签名的ActiveX控件”。 - 将部署清单的URL(如文件共享路径)添加到受信任站点。 #### 2. **检查注册表设置** - 确保插件在注册表中的LoadBehavior值为3(自动加载)[^3]。 - 注册表路径:`HKEY_CURRENT_USER\Software\Microsoft\Office\<Application>\Addins\<AddInName>` - 使用PowerShell检查: ```powershell Get-ItemProperty -Path "HKCU:\Software\Microsoft\Excel\Addins\ExcelAddIn" -Name "LoadBehavior" ``` 如果值为3,则正常;否则,修改为3。 #### 3. **验证部署清单** - 确保部署清单(.vsto文件)正确无误。引用[1]提到文件损坏可能导致问题,因此: - 检查.vsto文件大小(正常应在1-10KB)。 - 用文本编辑器打开.vsto文件,检查XML格式是否正确(如是否有非法字符)。 - 重新生成部署清单: - 在Visual Studio中,右键点击项目 → 发布 → 重新发布。 #### 4. **清理缓存** - 清除ClickOnce缓存(引用[2]): ```cmd rundll32 dfshim.dll,CleanOnlineAppCache ``` #### 5. **检查依赖项** - 确保目标计算机上安装了必要的组件: - .NET Framework版本(根据项目要求,如4.7.2或更高)。 - Visual Studio Tools for Office Runtime(VSTO运行时)。 - 下载VSTO运行时:[Microsoft Visual Studio 2010 Tools for Office Runtime](https://www.microsoft.com/en-us/download/details.aspx?id=48217) #### 6. **调试部署过程** - 使用Visual Studio的调试功能(引用[4]): - 在发布设置中启用详细日志: ```xml <PropertyGroup> <EnableClickOnceLogging>true</EnableClickOnceLogging> </PropertyGroup> ``` - 查看日志文件(通常在`%USERPROFILE%\AppData\Local\Temp\`下,文件名类似`VSTO.log`)。 #### 7. **修复安装快捷方式** - 引用[2]提到创建快捷方式。确保安装后快捷方式正确生成: - 在发布设置中选“创建桌面快捷方式”。 - 或者手动创建快捷方式,指向: ```text "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" /x "http://your-deployment-server/ExcelAddIn.vsto" ``` #### 8. **处理用户权限** - 确保安装用户有管理员权限(对于需要安装到所有用户的场景)。 - 或者,部署为用户级安装(仅当前用户),这样不需要管理员权限。 ### 常见错误及修复 | 错误现象 | 可能原因 | 解决方案 | |----------|----------|----------| | 安装时弹出安全警告 | 未受信任的发布者 | 将证书添加到受信任发布者 | | 启动Office后插件未加载 | LoadBehavior不为3 | 修改注册表值 | | 安装进度卡住 | 网络或文件问题 | 检查部署URL可访问性 | > **注意**:如果问题仍然存在,尝试在另一台计算机上部署,以确定是否为环境问题。 §§相关问题§§ 1. 如何为VSTO插件创建有效的数字证书? 2. ClickOnce部署失败后如何获取详细的错误日志? 3. 如何为不同版本的Office(如2016和365)配置VSTO插件?</think>### 解决VSTO项目在Visual Studio中运行正常但无法安装的问题 以下是针对VSTO部署失败的完整解决方案,结合引用内容的核心要点: #### 1. **配置信任机制**(引用[1]) - **添加发布者证书到受信任列表**: ```powershell certutil -addstore TrustedPublisher "E:\YourAddIn\LUXSAN_MH1364778.cer" ``` - **修改安全策略**: ```reg Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\VSTO] "DisableUserSecurityPrompt"=dword:00000001 ``` #### 2. **验证注册表配置**(引用[3]) - 检查关键注册表项: ```powershell Get-ItemProperty -Path "HKCU:\Software\Microsoft\Office\Excel\Addins\ExcelAddIn" | Format-List Description, FriendlyName, LoadBehavior ``` - 确保`LoadBehavior=3`(启动自动加载) - 完整注册表路径: ``` HKEY_CURRENT_USER\Software\Microsoft\Office\<App>\Addins\<AddInName> ``` #### 3. **修复部署配置** - **修改.csproj文件**: ```xml <PropertyGroup> <TargetZone>LocalIntranet</TargetZone> <Install>true</Install> <CreateDesktopShortcut>true</CreateDesktopShortcut> </PropertyGroup> ``` - **重建部署包**: ```cmd msbuild /t:Clean;Publish /p:PublishDir="\\NetworkShare\VSTO\" /p:ApplicationVersion=1.0.0.9 ``` #### 4. **诊断运行时依赖** | 组件 | 验证命令 | 最低要求 | |------|----------|----------| | VSTO运行时 | `Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\VSTO Runtime Setup\v4"` | 10.0.60833 | | .NET框架 | `reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release` | 4.7.2+ | | Office主互操作集 | `dir "C:\Program Files\Microsoft Office\root\Office16\PIAs\"` | 匹配Office版本 | #### 5. **调试部署过程**(引用[4]) - 启用详细日志: ```xml <!-- app.config --> <system.diagnostics> <switches> <add name="CPS" value="4"/> </switches> </system.diagnostics> ``` - 查看日志位置: ``` %LocalAppData%\Temp\VSTO\Logs\<AddInName>_<timestamp>.log ``` #### 6. **处理特定错误场景** - **清单签名失败**: ```powershell Set-AuthenticodeSignature -FilePath "ExcelAddIn.vsto" ` -Certificate (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0] ` -TimestampServer "http://timestamp.digicert.com" ``` - **网络部署访问问题**: ```xml <!-- deployment manifest --> <deployment install="true" mapFileExtensions="true" trustURLParameters="true" /> ``` > **关键验证**:使用`mageui.exe`工具(位于`C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\`)打开.vsto文件验证签名清单结构。 ### 部署成功检查表 1. 清单文件签名有效(非`NotSigned`状态) 2. 注册表项包含正确的LoadBehavior值 3. 客户端已安装匹配的VSTO运行时 4. 发布者证书在受信任存储 5. 网络部署路径在IE安全设置中设为受信任
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值