Wix 在安装文件期间检查 netfreamwork 4

Posted

技术标签:

【中文标题】Wix 在安装文件期间检查 netfreamwork 4【英文标题】:Wix checking netfreamwork 4 during installation of files 【发布时间】:2013-10-29 10:56:14 【问题描述】:

我遇到了来自 wix 的奇怪行为。我创建了安装,当我想测试它时,一切正常,我的对话框显示......但是当我点击安装时,它看起来正在安装,但是在三分之一的安装文件中弹出消息框说:安装 MYPRODUCT需要 .NET Framework 4!

我的第一个想法是我的启动条件不好......但它仍然是启动条件并且没有安装或什么......所以我删除了它仍然存在问题......

然后我想可能是因为我在 C# 中的自定义操作,所以我也删除了它,但问题仍然存在。任何的想法? 谢谢

顺便说一句。启动条件(网络框架)运行良好...

编辑:如果我设置 InstallScope="perUser" 它可以工作...

日志:

Action start 12:54:33: INSTALL.
MSI (s) (A0:F4) [12:54:33:505]: Running ExecuteSequence
MSI (s) (A0:F4) [12:54:33:505]: Doing action: FindRelatedProducts
Action 12:54:33: FindRelatedProducts. Searching for related applications
Action start 12:54:33: FindRelatedProducts.
MSI (s) (A0:F4) [12:54:33:507]: Skipping FindRelatedProducts action: not run in maintenance mode
Action ended 12:54:33: FindRelatedProducts. Return value 0.
MSI (s) (A0:F4) [12:54:33:507]: Doing action: AppSearch
Action 12:54:33: AppSearch. Searching for installed applications
Action start 12:54:33: AppSearch.
AppSearch: Property: FM70HOME, Signature: FM70_HOME_PathRegistry
MSI (s) (A0:F4) [12:54:33:508]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (s) (A0:F4) [12:54:33:508]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE32\SOFTWARE\Adobe\FrameMaker\7.0 3: 2 
AppSearch: Property: FM71HOME, Signature: FM71_HOME_PathRegistry
MSI (s) (A0:F4) [12:54:33:509]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (s) (A0:F4) [12:54:33:509]: PROPERTY CHANGE: Adding FM71HOME property. Its value is 'C:\Program Files (x86)\Adobe\FrameMaker7.1'.
AppSearch: Property: FM72HOME, Signature: FM72_HOME_PathRegistry
MSI (s) (A0:F4) [12:54:33:509]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (s) (A0:F4) [12:54:33:509]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE32\SOFTWARE\Adobe\FrameMaker\7.2 3: 2 
AppSearch: Property: FM80HOME, Signature: FM80_HOME_PathRegistry
MSI (s) (A0:F4) [12:54:33:510]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (s) (A0:F4) [12:54:33:510]: PROPERTY CHANGE: Adding FM80HOME property. Its value is 'C:\Program Files (x86)\Adobe\FrameMaker8\'.
AppSearch: Property: FM10HOME, Signature: FM10_HOME_PathRegistry
MSI (s) (A0:F4) [12:54:33:510]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (s) (A0:F4) [12:54:33:510]: PROPERTY CHANGE: Adding FM10HOME property. Its value is 'C:\Program Files (x86)\Adobe\AdobeFrameMaker10\'.
AppSearch: Property: NETFRAMEWORK45, Signature: NetFramework45
MSI (s) (A0:F4) [12:54:33:510]: Note: 1: 2262 2: Signature 3: -2147287038 
Action ended 12:54:33: AppSearch. Return value 1.
MSI (s) (A0:F4) [12:54:33:511]: Doing action: LaunchConditions
Action 12:54:33: LaunchConditions. Evaluating launch conditions
Action start 12:54:33: LaunchConditions.
Installation of eAIP.wiz@rd requires .NET Framework 4!
MSI (s) (A0:F4) [12:54:40:586]: Product: Product -- Installation of Product requires .NET Framework 4!

Action ended 12:54:40: LaunchConditions. Return value 3.
Action ended 12:54:40: INSTALL. Return value 3.

我也不知道它为什么要检查 NetFramework45... 我的启动条件是:

<Condition Message="Installation of Product requires .NET Framework 40 full!">NETFRAMEWORK40FULL OR REMOVE ~= "ALL"</Condition>
        <Condition Message="Installation of Product requires Framework!">NOT WF_INSTALLED = "NOT INSTALLED" OR REMOVE ~= "ALL"</Condition>
        <Condition Message="Can't find any of Adobe Framemaker 10.0, 8.0, 7.2, 7.1, 7.0 installation.! Product would not be working.">FM10HOME OR FM80HOME OR FM72HOME OR FM71HOME OR REMOVE ~= "ALL"</Condition>

为什么它会在第一次启动条件通过时写入要求 .Net Framework 4 的消息......以及当我完全安装了 net Framework 4 时?

完整日志: http://pastebin.com/eEGCnQXu

【问题讨论】:

是否有任何文件要安装在 .NET GAC 中?也许您应该有一个检查 .NET Framework 4 的启动条件? 正如我告诉你的那样,我有 NETFX4FULL 检查的启动条件,它没有任何问题通过,但在安装过程中弹出另一个检查,我不明白从哪里... 嗯,我只是注意到它在安装时弹出有关 net framework 的消息,进度条上方的状态是 Evaluating launch conditions... 那么出了什么问题?这可能意味着未检查启动条件,否则它会在启动时失败? 您发布的日志文件表明安装因启动条件而停止。你说的可能还有另一个日志 sn-p? 我发布了整个安装日志,但是在那个启动条件下安装停止了……我的意思是进度条是半绿色的,然后启动条件被触发了?喜欢wtf? 【参考方案1】:

好吧,也许我找到了解决办法。

整个问题都记录在我的日志中:

MSI (c) (B8:58) [12:54:23:788]: Doing action: FindRelatedProducts
Action 12:54:23: FindRelatedProducts. Searching for related applications
Action start 12:54:23: FindRelatedProducts.
FindRelatedProducts: Found application: xxx
MSI (c) (B8:58) [12:54:23:788]: PROPERTY CHANGE: Adding WIX_UPGRADE_DETECTED property. Its value is 'xxx'.
MSI (c) (B8:58) [12:54:23:788]: PROPERTY CHANGE: Adding MIGRATE property. Its value is 'xxx'.
FindRelatedProducts: Found application: xxx

这表明我已经安装了该产品...至少必须有一些注册表...所以我更改了产品 guid 并升级了..它可以工作...但是我仍然很奇怪,为什么告诉 net framework 4 在开始时在启动条件下通过时丢失。

【讨论】:

以上是关于Wix 在安装文件期间检查 netfreamwork 4的主要内容,如果未能解决你的问题,请参考以下文章

Wix 安装程序中的文件夹(在安装期间创建)对所有用户不可见

Wix工具集:连续检查条件

Wix安装程序:解压缩用户在安装期间选择的存档

如何在 Wix 主要升级期间防止数据库丢失

WiX:如何在升级期间显示 EULA 协议 UI?

在卸载期间提示用户关闭应用程序(在 WiX 中)