2015-07-20 80 views
0

因此,我有一个Wix引导程序,可以安装VC++ 2005(x86)可再发行组件,还可以安装第三方MSI, dll文件。当我在引导程序之外安装VC++ 2005(x86)时,一切正常,引导程序链跳过VC++安装,并安装需要SelfRegs的MSI而没有问题。但是,当我的引导程序在MSI之前安装VC++ Redistributable时,它依赖于它,因为SelfRegs失败。Wix bootstrapper遇到MSI需要使用SelfReg和VC++ 2005的问题

现在,如果我猜测这个问题可能与环境变量有关,在引导程序链中没有刷新,因此重新引导可以修复它。我宁愿选择另一种解决方案,并想知道其他人是否可以对发生的事情有一个概念,并给我一个替代方案。因此,当我遇到故障时,我可以确认VC++ 2005(x86)安装在日志文件中,HKLM/SOFTWARE/Microsoft/DevDiv/VC/8.0/RED的注册表项中/ 1033/Install,并在C:\ Windows \ WinSxS \ Manifests中显示清单文件。当我尝试使用Regsvr32.exe手动自我注册DLL时运行sxstrace,我得到这个日志。

================= 
Begin Activation Context Generation. 
Input Parameter: 
    Flags = 0 
    ProcessorArchitecture = Wow32 
    CultureFallBacks = en-US;en 
    ManifestPath = C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\PersonalCategory.dll 
    AssemblyDirectory = C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\ 
    Application Config File = 
----------------- 
INFO: Parsing Manifest File C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\PersonalCategory.dll. 
    INFO: Manifest Definition Identity is (null). 
    INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053" 
    INFO: Reference: Microsoft.VC80.ATL,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053" 
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053". 
    INFO: Resolving reference for ProcessorArchitecture WOW64. 
     INFO: Resolving reference for culture Neutral. 
      INFO: Applying Binding Policy. 
       INFO: No publisher policy found. 
       INFO: No binding policy redirect found. 
      INFO: Begin assembly probing. 
       INFO: Did not find the assembly in WinSxS. 
       INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.CRT\8.0.50727.4053__1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.DLL. 
       INFO: Did not find manifest for culture Neutral. 
      INFO: End assembly probing. 
    INFO: Resolving reference for ProcessorArchitecture x86. 
     INFO: Resolving reference for culture Neutral. 
      INFO: Applying Binding Policy. 
       INFO: Find publisher policy at C:\Windows\WinSxS\manifests\x86_policy.8.0.microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.8428_none_516ac2a30f4be7a6.manifest 
       INFO: Publisher Policy redirected assembly version. 
       INFO: Post policy assembly identity is Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.8428". 
      INFO: Begin assembly probing. 
       INFO: Attempt to probe manifest at C:\Windows\WinSxS\manifests\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.8428_none_d08a11e2442dc25d.manifest. 
       INFO: Manifest found at C:\Windows\WinSxS\manifests\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.8428_none_d08a11e2442dc25d.manifest. 
      INFO: End assembly probing. 
INFO: Resolving reference Microsoft.VC80.CRT.mui,language="*",processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.8428". 
    INFO: Resolving reference for ProcessorArchitecture WOW64. 
     INFO: Resolving reference for culture en-US. 
      INFO: Applying Binding Policy. 
       INFO: No publisher policy found. 
       INFO: No binding policy redirect found. 
      INFO: Begin assembly probing. 
       INFO: Did not find the assembly in WinSxS. 
       INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.CRT.mui\8.0.50727.8428_en-US_1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.mui.DLL. 
       INFO: Did not find manifest for culture en-US. 
      INFO: End assembly probing. 
     INFO: Resolving reference for culture en. 
      INFO: Applying Binding Policy. 
       INFO: No publisher policy found. 
       INFO: No binding policy redirect found. 
      INFO: Begin assembly probing. 
       INFO: Did not find the assembly in WinSxS. 
       INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.CRT.mui\8.0.50727.8428_en_1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.mui.DLL. 
       INFO: Did not find manifest for culture en. 
      INFO: End assembly probing. 
    INFO: Resolving reference for ProcessorArchitecture x86. 
     INFO: Resolving reference for culture en-US. 
      INFO: Applying Binding Policy. 
       INFO: No publisher policy found. 
       INFO: No binding policy redirect found. 
      INFO: Begin assembly probing. 
       INFO: Did not find the assembly in WinSxS. 
       INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.CRT.mui\8.0.50727.8428_en-US_1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.mui.DLL. 
       INFO: Did not find manifest for culture en-US. 
      INFO: End assembly probing. 
     INFO: Resolving reference for culture en. 
      INFO: Applying Binding Policy. 
       INFO: No publisher policy found. 
       INFO: No binding policy redirect found. 
      INFO: Begin assembly probing. 
       INFO: Did not find the assembly in WinSxS. 
       INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.CRT.mui\8.0.50727.8428_en_1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.mui.DLL. 
       INFO: Did not find manifest for culture en. 
      INFO: End assembly probing. 
INFO: Resolving reference Microsoft.VC80.ATL,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053". 
    INFO: Resolving reference for ProcessorArchitecture WOW64. 
     INFO: Resolving reference for culture Neutral. 
      INFO: Applying Binding Policy. 
       INFO: No publisher policy found. 
       INFO: No binding policy redirect found. 
      INFO: Begin assembly probing. 
       INFO: Did not find the assembly in WinSxS. 
       INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.ATL\8.0.50727.4053__1fc8b3b9a1e18e3b\Microsoft.VC80.ATL.DLL. 
       INFO: Did not find manifest for culture Neutral. 
      INFO: End assembly probing. 
    INFO: Resolving reference for ProcessorArchitecture x86. 
     INFO: Resolving reference for culture Neutral. 
      INFO: Applying Binding Policy. 
       INFO: No publisher policy found. 
       INFO: No binding policy redirect found. 
      INFO: Begin assembly probing. 
       INFO: Did not find the assembly in WinSxS. 
       INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.ATL\8.0.50727.4053__1fc8b3b9a1e18e3b\Microsoft.VC80.ATL.DLL. 
       INFO: Attempt to probe manifest at C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\Microsoft.VC80.ATL.DLL. 
       INFO: Attempt to probe manifest at C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\Microsoft.VC80.ATL.MANIFEST. 
       INFO: Attempt to probe manifest at C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\Microsoft.VC80.ATL\Microsoft.VC80.ATL.DLL. 
       INFO: Attempt to probe manifest at C:\Program Files (x86)\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\Microsoft.VC80.ATL\Microsoft.VC80.ATL.MANIFEST. 
       INFO: Did not find manifest for culture Neutral. 
      INFO: End assembly probing. 
    ERROR: Cannot resolve reference Microsoft.VC80.ATL,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053". 
ERROR: Activation Context generation failed. 
End Activation Context Generation. 

还在这个选择上做了一个Dependency Walker的dll。 enter image description here

+0

假设你的猜测或类似的东西是正确的,它证明了避免自我注册和自定义操作的重要性。太糟糕了,问题出在第三方安装程序中。 –

回答

0

可能很少有其他原因,例如某些依赖项丢失或引导程序执行的用户上下文与工作场景不同。

我在这里要做的第一件事就是检查Windows安装程序日志。 要生成,Windows安装程序日志,你可以按照下面的链接:

http://blogs.msdn.com/b/astebner/archive/2005/03/29/help-me-help-you-if-you-have-setup-bugs.aspx

- 如何在您执行的引导程序之外的安装程序? 您是以静默模式安装它们吗?作为引导程序安装msi以静默方式执行此操作非常重要。 您是通过提升的命令提示符安装它们吗?

我在问您上述问题,因为您声明安装在引导程序之外工作。

- 您遇到Self regs错误,您是否收到错误消息? 如果是的话,而不是点击Ok并允许安装回滚,您可以转到复制文件的文件夹。尝试从命令提示符手动注册DLL,看看你是否可以注册该DLL。

如果以上都没有工作,请从安装中发布日志文件,然后我们可以将其转发。

+0

当我在安装程序外部运行VC++可再发行组件时,我只需双击它并让它运行就没有MSI中的选项,它只是运行一个进度条。当Wix安装可再发行组件时,它传递额外的参数ARPSYSTEMCOMPONENT =“1”MSIFASTINSTALL =“7”,我怀疑是造成这个问题。 – Thermonuclear

+0

我也暂停了安装程序以尝试自己进行注册,但我不完全确定SelfReg在做什么。我认为它调用regsvr32.exe对dll。但是当我让安装程序暂停并运行一个regsvr32时,我得到一个错误的并排配置是不正确的错误。这似乎与VC++问题一致。 – Thermonuclear

+0

好吧,如果您在手动运行regsvr32.exe时看到并排错误,则意味着缺少依赖关系。你确定**确认** VC++运行时间已安装? ARPSYSTEMCOMPONENT =“1”可防止在添加/删除程序小程序中显示VC++运行时。 MSIFASTINSTALL =“7”使安装过程更快。因此理论上,ARPSYSTEMCOMPONENT =“1”MSIFASTINSTALL =“7”不应该是问题的原因。这里要做的几件事情: - 安装前清除事件查看器。安装后检查事件查看器。 –