Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ClickOnce的流程和先决条件_C#_Clickonce_Manifest_Publishing - Fatal编程技术网

C# ClickOnce的流程和先决条件

C# ClickOnce的流程和先决条件,c#,clickonce,manifest,publishing,C#,Clickonce,Manifest,Publishing,我想通过ClickOnce构建和部署一个应用程序。但我们希望这是一个可以通过脚本在VS之外运行的过程,无论是测试、业务UAT还是生产环境 每个单独的环境都需要使用不同的.config文件,并在更新位置上部署不同的web服务器 该应用程序还具有.NET runtime 3.5和Crystal reports的先决条件 我已经研究过使用MAGE创建应用程序和部署清单,如果我进行代码构建,然后根据每个环境使用MAGE,并将脚本复制到正确的.config文件上,这将在运行脚本时为每个环境创建我认为正确的

我想通过ClickOnce构建和部署一个应用程序。但我们希望这是一个可以通过脚本在VS之外运行的过程,无论是测试、业务UAT还是生产环境

每个单独的环境都需要使用不同的.config文件,并在更新位置上部署不同的web服务器

该应用程序还具有.NET runtime 3.5和Crystal reports的先决条件

我已经研究过使用MAGE创建应用程序和部署清单,如果我进行代码构建,然后根据每个环境使用MAGE,并将脚本复制到正确的.config文件上,这将在运行脚本时为每个环境创建我认为正确的清单

但我正在努力做的是包括先决条件。如果通过VS完成,您可以指定一个setup.exe包,该包使用pre-reqs生成并与应用程序一起部署,当您单击下载链接时,它将从setup.exe安装pre-reqs,然后从应用程序安装pre-reqs

但是如何在VS之外手动执行此操作?我可以使用正确的URl位置通过VS构建setup.exe,但是如何使用MAGE将setup.exe作为预请求链接到应用程序以生成清单

我们面临的问题是1)用户没有下载和安装软件包的管理员权限,只能通过clickonce进行安装,因此pre-reqs必须安装在clickonce安全保护伞下


谢谢

如果一切都可以通过clickonce完成,为什么要手动构建安装程序? 如果您想包括.netfx或crystalreports,可以从先决条件窗体中选择“从同一位置下载先决条件”选项,下载.netfx3.5和crystalreports的引导程序包并添加到文件夹(对于windows 7)“C:\Program Files(x86)\Microsoft SDK\windows\v7.0A\Bootstrapper\packages”。部署项目将自动包括netfx和其他软件包以及setup.exe。
希望这有帮助。

单击一次,预请求会引起很多混乱。Visual Studio生成的setup.exe与ClickOnce无关。两者之间唯一的次要联系是setup.exe将在完成后启动ClickOnce应用程序。就这样。因此,认为用户能够“在clickonce安全保护伞下”安装您的prereqs是一个错误。如果他们不是管理员,并且prereq安装需要管理员权限,他们将无法安装它

我的建议是一次性生成setup.exe。除非您的需求不断变化,否则您不需要继续这样做。使用VisualStudio,生成一次设置,然后使用Mage进行其余操作

编辑
通常情况下,您可以使用setup.exe,这取决于用户是否需要运行它。如果他们已经有了prereqs并运行setup.exe,那么不会发生什么不好的事情。它看到所有东西都已安装,然后启动应用程序

通常,您将指导用户运行setup.exe。下次他们想启动应用程序时,应该使用“开始”菜单快捷方式(假设你没有选择“仅在线”)。我发现这是对用户来说最容易混淆的一套说明


还记得VisualStudio在发布时如何执行额外的、非单击一次的操作(如setup.exe)吗?它还创建了一个简单的html页面,其中包含指向ClickOnce清单和setup.exe的链接以及说明。它还有一些javascript检查UserAgent字符串以确定是否安装了.NET Framework。再说一遍,这不是ClickOnce。这正是VisualStudio为您所做的事情。如果你喜欢,就用它。我有点喜欢跳过它,然后运行setup.exe进行安装,然后从“开始”菜单启动。

codeConcussion是正确的,您永远无法直接从ClickOnce中灌输先决条件。您应该只生成一次,然后就可以使用外部ClickOnce工具了

除了法师,还有一个选项。您可以使用我的公司工具,作为您的ClickOnce构建软件。它是为那些想使用ClickOnce但不想使用VisualStudio构建的用户而设计的


它可以挂接到Visual Studio()生成的setup.exe中,因此应该可以满足您的所有需要。

谢谢。那么设置通常用于什么?问题是我不想通过VS构建,我想从命令提示符下完成这一切,所以我不能在表单中指定任何内容。我需要在部署到web服务器的包中包含pre-req包,并指定在安装之前将其作为pre-req下载,但所有这些都不在VS范围内。谢谢,这听起来像是前进的方向。我通过VS生成setup.exe,如果我使用mage生成清单,然后手动复制到部署web服务器,我如何指定setup.exe包含必须首先安装的先决条件,或者我只需从clickonce之外的web服务器下载setup.exe,然后确保用户知道他们必须首先运行它,而不需要任何提示?