You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET多框架解决方案Wix安装报错0x80070643求助

问题描述

我的解决方案包含.NET Framework 4.8、.NET Standard和.NET 6程序集,安装生成的特定.exe工件时失败,抛出以下异常:

Error 1001. Unable to get installer types in the \service.exe assembly.--> Unable to load one or more request types.

安装日志同时显示Error 0x80070643: Failed to install MSI package,但应用在Visual Studio中运行正常。

当前Wix配置如下:
针对.NET Framework和.NET Standard程序集的配置:

<Component Id="__Device_dll" Guid="{9C75189F-BE83-4227-A798-F00C76F27CE6}">
   <File Id="__Device_dll" Name="Device.dll" KeyPath="yes"  Assembly=".net" AssemblyManifest="_Device_dll" AssemblyApplication="Device_dll" DiskId="1" Source="$(var.SourceDir)\Device.dll" />
</Component>

针对.NET 6程序集的配置:

<Component Id="Process_Executor_exe" Guid="{0D8D84F1-FFC5-28F6-F1D7-8620DA17313B}">
  <File Id="Process_Executor_exe" Name="SProcess.Executor.exe" Source="$(var.SimulationSourceDir)\Process.Executor.exe" />
</Component>

请问这是Wix配置存在遗漏导致的吗?

问题分析与解决

Error 1001通常和.NET安装程序类加载失败直接相关,结合混合多个.NET版本的场景,重点排查以下几个方面:

1. .NET 6程序集的Wix配置缺失关键属性

如果SProcess.Executor.exe是带有安装程序类(比如继承自System.Configuration.Install.Installer)的可安装组件(如Windows服务),当前配置未标记正确的.NET类型属性。Wix中,.NET Framework程序集用Assembly=".net",而.NET Core/.NET 5+程序集需要用Assembly=".netcore",同时需补充AssemblyApplication和KeyPath属性。修改后的配置如下:

<Component Id="Process_Executor_exe" Guid="{0D8D84F1-FFC5-28F6-F1D7-8620DA17313B}">
  <File Id="Process_Executor_exe" Name="SProcess.Executor.exe" Source="$(var.SimulationSourceDir)\Process.Executor.exe" 
        Assembly=".netcore" AssemblyApplication="Process_Executor_exe" KeyPath="yes" />
</Component>

若该exe不是带安装程序类的组件,可跳过Assembly属性;但如果是服务类exe,必须正确配置,否则Windows Installer无法识别并加载对应的安装逻辑。

2. 依赖程序集未完全打包

“无法加载一个或多个请求类型”的核心原因是安装时service.exe找不到依赖的dll,需检查:

  • 所有被service.exe引用的.NET Standard、.NET Framework、.NET 6程序集是否都已添加到Wix的Component中,确保安装时被复制到目标目录;
  • 若.NET 6程序集是框架依赖部署(FDD),需确认目标机器已安装.NET 6运行时;若是独立部署(SCD),要把生成的所有依赖文件(包括runtime目录下的文件)都加入安装包。

3. 安装程序类的版本兼容性问题

.NET Core/.NET 5+的安装程序类和.NET Framework的实现存在差异,Windows Installer默认的InstallUtil工具无法完美兼容.NET 6的安装程序类。建议改用Wix原生的ServiceInstall和ServiceControl元素部署服务,完全避开.NET版本兼容问题。

4. Wix版本兼容性

确保使用的Wix版本支持.NET 6,比如Wix 3.11及以上版本对.NET Core/.NET 5+的支持更完善,旧版本可能无法正确识别.NET 6程序集的属性。

内容的提问来源于stack exchange,提问作者Aditya Dalai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:40:58