我正在编写我的第一个WIX安装程序。安装的应用程序使用作为合并模块安装的各种微软标准OCX控件,例如MSCOMCTL。男男,MSFLXGRD。二甲基砜等。
由于某种原因,如果目标机器已打开UAC,则在安装后运行应用程序失败,并显示"MSCOMCTL缺失或未正确注册…"的消息。然而,如果应用程序运行一次"作为管理员",它提出了一个UAC"可以这个应用程序做出改变"的消息(所以它显然改变了一些东西),然后运行良好,什么是更多的运行永远没有管理员权限后。(或者,在RegSrv中注册相关控件也可以)。
我已经用ProcMon监控了应用程序,它显然是在做一个晚注册。这就好像安装程序在没有安装合并模块的情况下发布了合并模块的内容。我也看了合并模块,和我的MSI,与Orca,但我不能想出任何方法来阻止这种行为。
我确实想知道这是否与短信的版本有关,但似乎几乎不可能找到这些微软短信的最新版本是什么,也找不到任何地方下载它们。
显然,我们不想让我们的客户在安装我们的产品时经历这个复杂的过程。如有任何建议,不胜感激。
谢谢Kiran。我们也在MSDN文档中读到了这一点。问题是我们不能改变已经内置在微软合并模块中的项目的广告属性(好吧,我们可以使用Orca,但这会很混乱)。
然而,我认为我们可能已经找到了问题的根源。我们产品的上一个版本使用了一个使用InstallShield构建的工具包。当我们比较InstallShield创建的。MSI与Wix创建的。MSI时,我们注意到IS的installeexecuesequence表包含RegisterProgIdInfo, RegisterClassInfo和registertypelibrlibraries,它们不会出现在Wix生成的MSI中。我们认为可能需要一些或所有这些来强制安装msm。我需要弄清楚如何把这些放入Wix,然后尝试看看它是否有效。我会尽量记得把结果贴在这里,以供后人参考。[第二天]确认。对于其他有此问题的人,您只需要添加