c# - 是否可以从 aspnet 核心 Web 应用程序生成 .msi 包?

标签 c# wix

所以目前的情况是,客户端将下载从 wix 生成的 .msi 包,执行安装,然后在应用程序(Windows 服务/控制台)中输入一些特定的配置详细信息。

我一直在寻求简化此过程,以便客户端所要做的就是运行安装程序(无需配置),所以我想知道是否有人遇到过类似情况。

这就是我想象的工作流运行方式。

用户登录到 Multi-Tenancy Web 应用程序 => 用户单击下载按钮 => Web 服务器收集租户信息 => Web 服务器将配置传递到 wix(作为构建参数?)=> msi 生成时嵌入了配置 = > 用户下载生成的 .msi,世界继续旋转。

现在有几件事我不确定,所以这是我的问题。

  1. 您将如何从网络应用程序运行 wix 安装程序?它是用 C# 编写的,所以它会启动一个 cmd 窗口并运行 msbuild 吗?
  2. 如果 1. 可行,它在 Visual Studio 中的外观/功能如何。我假设安装程序项目/安装程序 Assets 项目都需要在 Web 应用程序的构建输出中,是否可以将原始文件复制到输出中? <= 这甚至是一个好习惯吗?

这对我来说似乎不切实际,所以如果有人对如何实现这一点有任何建议,无论是我上面描述的方法还是任何其他方法,那么我都乐于接受想法!

澄清一下,主要目标是“在运行时生成一个嵌入了租户配置的 Windows 安装程序”

最佳答案

您当然可以从 C# 中完成。以 CakeBuild 的 Wix 扩展为例:https://github.com/cake-build/cake/tree/33b83fdbc24a7d3d1bafc4cd7c7df0a204162e3b/src/Cake.Common/Tools/WiX

至于将“内容”文件与您的 Web 应用程序打包在一起,您也可以这样做,就网站而言,wix 项目文件与任何其他 Assets 没有什么不同。

此外,要从 dot net 应用程序运行进程,需要围绕重定向和记录输出做大量工作,您可能希望查看 Nuget 上的一些进程处理包,它们可以为您完成这项工作。

性能对您来说可能是个问题,另外还有保护可下载 MSI 的方法,以防您只希望一个用户获得它。如果您还没有,您可能还需要研究代码签名。除此之外,它应该相当简单。

关于c# - 是否可以从 aspnet 核心 Web 应用程序生成 .msi 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50637578/

相关文章:

c# - 为什么List.Add即使存在对象也返回错误 'Object reference not set to an instance of an object'?

c# - 动态添加链接按钮

c# - 如何序列化匿名对象以通过 SOAP Web 服务发送?

deployment - 使用 Wix 部署 Outlook 加载项

.net - Wix Bootstrap 不会检测已安装的 .NET 框架

.net - 使用 WiX 安装程序复制 Visual Studio COM 注册

c# - 如何使用方法 async Task<string> 并返回字符串,然后如何将该方法的委托(delegate)传递给构造函数并在以后使用它?

c# - 是否可以从 VB.Net 迁移到 C# 以便与 Mac 一起使用

wix - 服务安装或服务控制问题

WiX:将永久组件恢复为非永久状态