我有一个应用程序,我想通过ClickOnce构建和部署。但是我们希望这是一个可以通过脚本在VS之外运行的进程,用于测试,业务UAT或生产环境。
每个单独的环境都需要使用不同的.config文件,并且需要部署不同的Web服务器以及更新位置。
该应用程序还具有.NET运行时3.5和Crystal报告的先决条件。
我已经研究过使用MAGE来创建应用程序和部署清单,如果我执行代码BUILD,那么根据每个环境使用MAGE,以及让脚本复制到正确的.config文件,这会创建什么我认为在运行脚本时每个环境都是正确的清单。
但我正在努力做的是包括先决条件。如果通过VS完成,您可以指定setup.exe包,该包使用pre-req构建并与应用程序一起部署,当您单击下载链接时,它会安装setup.exe然后应用程序的pre-req。
但是如何在VS外手动执行此操作?我可以使用正确的URl位置通过VS构建setup.exe,但是如何使用MAGE将setup.exe链接到应用程序作为预先生成清单?
我们遇到的问题是1)用户没有管理员权限来下载和安装软件包,只能通过clickonce安装东西,因此必须在点击一次安全保护伞下安装预先要求。
由于
答案 0 :(得分:5)
ClickOnce和先决条件会造成很多混乱。 Visual Studio生成的setup.exe与ClickOnce无关。两者之间唯一的小连接是setup.exe将在完成后启动ClickOnce应用程序。而已。因此,思考用户将能够“在clickonce安全保护伞下”安装您的先决条件是一个错误。如果他们不是管理员,并且先决条件安装需要管理员权限,他们将无法安装它。
我的建议是生成一次setup.exe。除非你的先决条件不断变化,否则你不应该继续这样做。使用Visual Studio,生成一次设置,然后使用Mage。
修改强>
通常,您可以使setup.exe可用,并依赖于用户知道是否需要运行它。如果他们已经有先决条件并运行setup.exe,则不会发生任何不良情况。它看到一切都已安装然后启动应用程序。
通常,您将指示用户运行setup.exe。下次他们想要启动应用程序时,他们应该使用开始菜单快捷方式(假设您没有使用“仅限在线”)。我发现这对用户来说是最不容易混淆的说明。
还记得Visual Studio在发布时(如setup.exe)如何处理额外的非ClickOnce内容吗?它还创建了一个简单的html页面,其中包含指向ClickOnce清单和setup.exe的链接以及解释。它还有一些javascript,它检查UserAgent字符串以确定它们是否安装了.NET Framework。同样,这不是ClickOnce。这只是Visual Studio为您所做的一切。如果你喜欢它,请使用它。我有点像跳过它并使用运行setup.exe进行安装然后从开始菜单启动。
答案 1 :(得分:1)
codeConcussion是对的,你实际上不能直接从ClickOnce灌输先决条件。您应该只生成一次,然后为外部ClickOnce工具做好准备。
除法师之外还有一个选项。您可以使用我的公司工具ClickOnceMore作为ClickOnce构建软件。它专为想要使用ClickOnce但不想使用Visual Studio构建的人设计。
它可以挂钩到Visual Studio(details here)生成的setup.exe,因此应该满足您的所有需求。
答案 2 :(得分:0)
如果可以通过clickonce完成所有操作,为什么还要手动构建设置? 如果要包含.netfx或crystalreports,请下载.netfx3.5&的自举包,您可以从先决条件表单中选择“从相同位置下载先决条件”选项。 crystalreports并添加到文件夹(对于Windows 7)“C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages”。部署项目将自动包含netfx&其他软件包以及setup.exe。 希望这有帮助。