1

我有一个 clickonce 应用程序。我需要为该应用程序注册 COM 可见 dll。我在该应用程序的代码中使用了注册,检查它是否已经注册并通过 RegistrationServices 类方法 RegisterAssembly() 进行注册。如果它是由管理员启动的,它工作正常。但我不能要求管理员权限来部署 clickonce 应用程序。我尝试注册的第二种方式是我的 clickonce 的先决条件,这将需要管理员并注册我的 dll。我为我的先决条件应用程序创建了产品清单,但在 clickonce 部署期间出现错误

“安装程序检测到文件'...'自最初发布以来已更改或可能已损坏。”

我发现这是.NET 4.5的问题,我应该签署我的先决条件。我再次签名并由 Bootstrapper 生成清单。之后我在部署过程中遇到以下错误:

“文件不受信任错误:安装程序检测到无法验证文件的发布者”

在成功部署 clickonce 之前,我必须先在目标机器上安装证书。但是在所有目标机器上安装 clickonce 之前是不可能安装证书的。有没有人有任何想法如何解决这个问题?提前致谢。

4

1 回答 1

1

我与 Microsoft 的 ClickOnce 人员讨论了您的问题。你用的是VS2010还是VS2012?他说您看到的错误有时会在使用 VS2010 时发生。

如果您使用 VS2010 并且该计算机上安装了 .NET 4.5,则 VS 使用来自 .NET 4.5 的构建任务,并使用自定义引导程序包上的 SHA256 哈希来创建该安装程序包。但随后 setup.exe 将下载引导程序并尝试进行 SHAH1 比较,这与 SHAH2 不匹配。

解决方法是,如果您使用 VS2012 更新 2 构建和部署它,它应该可以工作。

如果您使用适当的 CA 证书对其进行签名,它也应该可以工作。在这种情况下,他们不进行哈希验证,他们只是使用证书进行验证。

如果要继续使用VS2010,可以从VS2012 update 2中取出setup.bin,放到vs2010文件夹中,然后就可以使用了。它位于 Windows SDK 文件夹中。

于 2013-09-08T17:33:32.030 回答