MSI Windows Installer

时间:2017-07-24 15:51:39

标签: c# .net logging windows-installer

我正在努力将应用程序从.NET 3.5升级到.NET 4.0,最终升级到4.6,这在安装过程中当前正在崩溃。在将旧的托管C ++代码重新编写为C ++ / CLI时,我做了很多改动,但除了.NET设置之外,还没有触及约95%的其他C#文件。代码也已从VS 2010移至VS 2015,目标计算机已从32位Windows 7迁移到64位Windows 10。

在目标计算机上运行我的新安装程序会产生以下错误框:

  

错误1001:安装的提交阶段发生了异常。       此异常将被忽略,安装将继续。        - >发现了模糊的匹配。

过去几次错误1001一直在考虑.NET版本的差异,以及对代码的必要更改。这些消息也更具体地说明了哪些文件存在问题。

我能够获得工作版和新版的日志文件。它们有相似之处,但在旧日志中没有出现的一条线是:

  

MSI(s)(6C:A4)[11:17:04:754]:WIN64DUALFOLDERS:替换为       'C:\ Program Files(x86)\ FOLDER'文件夹已被阻止       通过1掩码参数(文件夹对的iSwapAttrib成员= 0)。

我想知道这是否相关,出现了很多这些行,然后日志看起来与那里不同。如果问题出在代码上,或者类似于安装程序项目的安装问题,我甚至都不肯定。有没有人对从这里看哪里有任何想法?

1 个答案:

答案 0 :(得分:0)

错误1001几乎总是自定义操作失败的下游结果,因此它将是代码失败,加载失败等等。无论哪种方式,它都需要调试代码路径或加载代码。这些托管代码自定义操作未以“正常”方式加载。它们使用反射进行实例化,将加载某些版本的运行时,并且某些内容(如自动加载配置文件)将无法正常工作。在Everyone安装中,它们使用System帐户运行。这些都具有下游效果,可能导致在正常用户加载环境中运行的代码失败(由msiexec.exe调用的Dll不是)。

双文件夹条目无关。您尚未发布安装项目的体系结构,但32位安装项目无法安装到64位ProgramFiles文件夹。对于64位安装项目,您可能希望使用ProgramFiles64Folder,CommonFiles64Folder等。

编辑:发现不明确的匹配可能是与查找安装程序类类型相关的反射错误。