【发布时间】:2015-07-14 17:14:27
【问题描述】:
我一直致力于为使用 Octopus Deploy 的客户设置部署管道。客户正在从 Visual Studio 2013 解决方案构建 MSI(遗憾的是,通过使用旧的 .vdproj,但这是另一回事)。我使用 OctoPack 将 MSI 包装在 NuGet 包中,并使用 NuGet.exe 将其发布到 Octopus 内部 NuGet 存储库。
然后,我使用 Octopus 中的“部署 NuGet 包”步骤将包部署到给定环境。现在,作为部署过程的一部分,我还使用template from the Octopus Deploy Libray 安装了 MSI。此模板还使我能够首先从目标计算机上卸载 MSI(如果已安装),这将是部署过程中的自然步骤 2。它使用 msiexec 在 MSI 上执行操作。这就是我的问题所在。考虑以下场景:
- 我将包含 MSI 1.0 版的 NuGet 包部署到目标环境
- 我稍后想将包含更新的 MSI 1.1 版的 NuGet 包部署到与上述项目符号相同的目标环境中,其中 1.0 版中存在的 DLL 已被删除
卸载旧版本时,我需要为模板提供我要卸载的 MSI 的路径。假设目标环境中不再存在版本 1.0。我可以将模板指向 MSI 的 1.1 版,以卸载 1.0 版吗?
据我从客户那里了解到,已经为 MSI 生成了一个固定的 GUID,即每次 Visual Studio 生成/构建它时,MSI 的 GUID 都是相同的。因此,我想知道 msiexec 是否使用此 GUID 来卸载 MSI,因此,我在模板中指向哪个版本的 MSI 来卸载它并不重要。
这是正确的理解吗?感谢我能得到的任何帮助和澄清。
【问题讨论】:
标签: visual-studio-2013 deployment windows-installer octopus-deploy