ClickOnce应用程序部署和.NET COM可见dll注册

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

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

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

我发现这是我的问题,我应该签署我的先决条件。我签署了它,并再次由引导程序生成清单。之后,我在部署过程中出现以下错误:

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


我必须先在目标计算机上安装证书,然后才能成功部署clickonce。但在所有目标机器上安装clickonce之前,不可能安装证书。有人知道如何解决这个问题吗?提前谢谢。

我和微软的ClickOnce人员谈过你的问题。您使用的是VS2010还是VS2012?他说,您看到的错误有时会在使用VS2010时发生

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

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

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


如果要继续使用VS2010,可以从VS2012更新2中选取setup.bin,将其放置在VS2010文件夹中,然后它就可以工作了。它在windows SDK文件夹中。

我和微软的ClickOnce人员谈过你的问题。您使用的是VS2010还是VS2012?他说,您看到的错误有时会在使用VS2010时发生

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

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

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


如果要继续使用VS2010,可以从VS2012更新2中选取setup.bin,将其放置在VS2010文件夹中,然后它就可以工作了。它位于windows SDK文件夹中。

[ComVisible]程序集与ClickOnce非常不兼容。CO的要点是,您不需要对机器进行任何配置更改。这个问题在其他方面没有什么意义,听起来像是在.NET应用程序中使用了[ComVisible]的.NET组件。不要这样做,只需添加一个引用。Hans,我必须使用CO,所以我不能只添加引用。您是使用来自CA(如VeriSign)的证书还是由VS生成的证书对应用程序进行签名?我仅使用signtool对应用程序进行签名。我认为VeriSign可以解决这个问题,但这不是免费的。[ComVisible]程序集与ClickOnce非常不兼容。CO的要点是,您不需要对机器进行任何配置更改。这个问题在其他方面没有什么意义,听起来像是在.NET应用程序中使用了[ComVisible]的.NET组件。不要这样做,只需添加一个引用。Hans,我必须使用CO,所以我不能只添加引用。您是使用来自CA(如VeriSign)的证书还是由VS生成的证书对应用程序进行签名?我仅使用signtool对应用程序进行签名。我认为VeriSign可以解决这个问题,但这不是免费的。