InstallShield生成的安装包 选择安装目录时失去焦点的问题

本文探讨了使用InstallShield制作安装包时,安装目录选择对话框失去焦点的常见问题及其原因。该问题是由于安装背景窗口无标题或隐藏导致的。官方提供了两种工作 around:显示背景窗口或添加标题栏。尽管某些情况下仍可能出现问题,但这些方法能有效减少焦点丢失的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      用InstallShield的制作的安装包,在选择安装目录时,点击“浏览”或“选择”等按钮,弹出选择目录的对话框之后,经常会遇到安装程序失去焦点的问题。

 

     具体的说,就是在可以手动输入路径的位置,有时候是选择目录对话框刚弹出来就失去焦点;有时候虽然没有,但只要光标切到其他程序再切回安装界面,也一定会出现失去焦点的问题。

     就是刚过了几秒钟,可能还没来及把想要的地址输完,光标就莫名其妙的切出去了。选择目录的窗口是通过SelectDir 函数产生的,问题应该在这个函数中。但是没有该方法的代码,我水品很烂所以自己搞不定。

  

 

后来经反复研究发现,这个问题是有InstallShield工具本身的bug引起的。在其官方有此bug报告


官方解释是

Cause
     This issue is related to the way that the operating system interacts with the main installation window whose background window does not have a caption (including when the window is hidden, which is the default.) Therefore, to avoid this issue, the main installation window must have a caption. Unfortunately, by default, the background window is hidden and does not include a caption.

 

     大概意思是说,安装时的背景窗口不能没有标题或者被隐藏。否则就会产生这个问题。然而默认情况下,InstallShield制作的安装包,安装背景窗口是被隐藏的。所以当然就出问题了。且这个bug在InstallShield10-12,08,09等各版本中都存在。

 

     按其官方说法,将安装背景窗口显示出来就可以避免这个问题。比如有很多游戏软件以及其他大型工具或驱动,安装的时候都是有一个全屏的背景。

 

可以这样做:
Workaround
 1、
An installation that displays the main background window without a caption bar with a call to only enable the background:


must add a call to enable either DEFWINDOWMODE or FULLWINDOWMODE:


2、
An installation that does not display a background window can either use the above workaround, followed by a call to Disable (BACKGROUND), or can use the following code to add a caption bar without displaying the background window at all:

 

 

    我试验了一下,全屏安装的时候没有出现一点击“浏览”就失去焦点的问题,并且整个桌面都被安装背景覆盖了,鼠标一般也点不出去,所以一般不存在切换窗口再切回来时就失去焦点的问题。但是如果用alt+tab切换窗口的话,好像仍然会出现这个bug,不过好像很少有用户会这么做了,所以这样也不失为一种解决方案。

 

    另外好像在一个论坛上看到一种方法,和显示背景有点类似,具体的代码记不清了,好像也就是Enable这几个函数。用这种方法刚开始没有背景(估计也是被隐藏了)也没有出现失去焦点的问题。但是如果安装过程中,在任何一个安装界面里,切换一下窗口再切回安装程序时,就会出现一个绿色的全屏的InstallShield默认安装背景~~。看来还是不能彻底解决问题!

 

                                                                                                           2009-12-01   20:32:22

 

 

欢迎复制、转帖,请注明出处http://blog.youkuaiyun.com/icycode/archive/2009/12/01/4916764.aspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值