2

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

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

该应用程序还具有 .NET 运行时 3.5 和 Crystal 报表的先决条件。

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

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

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

我们遇到的问题是 1) 用户没有下载和安装软件包的管理员权限,只能通过 clickonce 安装东西,因此必须在 click once 安全保护伞下安装 pre-reqs。

谢谢

4

3 回答 3

5

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

我的建议是生成您的 setup.exe 一次。除非您的先决条件不断变化,否则您不需要继续这样做。使用 Visual Studio,生成一次设置,然后使用 Mage 完成其余部分。

编辑
通常,您使 setup.exe 可用,并取决于用户是否需要运行它。如果他们已经拥有先决条件并运行 setup.exe,则不会发生任何不好的事情。它看到所有东西都已安装,然后启动应用程序。

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

还记得 Visual Studio 在发布时是如何做额外的、非 ClickOnce 的东西的(比如 setup.exe)吗?它还创建了一个简单的 html 页面,其中包含指向 ClickOnce 清单和 setup.exe 的链接以及说明。它还有一些 javascript 检查 UserAgent 字符串以确定它们是否安装了 .NET Framework。同样,这不是 ClickOnce。这只是 Visual Studio 为您做的一件好事。如果您喜欢它,请使用它。我有点喜欢跳过它并运行 setup.exe 进行安装,然后从开始菜单启动。

于 2012-09-11T19:18:31.943 回答
1

codeConcussion 是对的,您实际上不可能直接从 ClickOnce 灌输先决条件。您应该只生成一次,然后为您的外部 ClickOnce 工具准备好它。

除了法师,还有一个选项。您可以使用我的公司工具ClickOnceMore作为您的 ClickOnce 构建软件。它专为想要使用 ClickOnce 但不想使用 Visual Studio 构建的人而设计。

它可以挂接到从 Visual Studio 生成的 setup.exe(详情请点击此处),因此应该可以满足您的所有需求。

于 2012-09-11T19:32:34.413 回答
0

如果一切都可以通过 clickonce 完成,为什么还要手动构建设置?如果要包含 .netfx 或 crystalreports,则可以从先决条件表单中选择“从同一位置下载先决条件”选项,下载 .netfx3.5 和 Crystalreports 的引导程序包并添加到文件夹(对于 Windows 7)“C:\Program文件 (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages" 。部署项目将自动包含 netfx 和其他软件包以及 setup.exe。希望这可以帮助。

于 2012-09-11T11:06:55.103 回答