InstallShield(Windows Installer)操作文本未针对自定义操作进行更新

时间:2012-08-31 07:44:43

标签: user-interface progress-bar windows-installer installshield installshield-2010

我正在使用installshield开发产品的安装程序,而我的自定义操作更新了ActionText(当前操作说明)的问题。

我在这里执行了以下步骤:http://helpnet.flexerasoftware.com/installshield17helplib/ActionTextSettings.htm这些内容非常有意义,应该可以使用,但我的自定义操作不会更新UI中的操作文本。

我在想,因为我的自定义操作会运行并等待一个长时间运行的进程结束,也许它会阻止任何线程负责更新操作文本。

现在我写它,它似乎没有意义,但我不知道还有什么可以做到的!

自定义操作的主要细节是:

Filename & Command line: wscript.exe "invisible.vbs" "longrunningbatch.bat"
Return Processing:       Synchronous
In-Script Execution:     Commit Execution in System Context

invisible.vbs包含:

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, True

上面的行应该隐藏shell窗口,'True'确保shell在批处理文件运行完毕之前不会返回。

我还根据链接将自定义操作添加到操作文本列表中,并将其与字符串相关联。

应该正常工作吗?

其他人都经历过这种情况吗?

2 个答案:

答案 0 :(得分:1)

首先,你需要刷新你的Windows安装程序,因为如果你已经将一个动作从提交更改为延迟,那对你没关系,那么你已经做了一些不寻常的事情。延迟操作适用于以某种与安装相关的方式修改系统的操作。提交操作是完成关联的延迟操作已完成的任何工作(例如,延迟操作修改某些系统文件。提交操作将删除未修改的系统文件的备份)。此外,如果您有延迟操作,那么您还应该有一个回滚操作,如果用户取消安装或失败,则撤消延迟操作所做的任何操作。

以下两个链接可帮助您指明正确的方向:

http://blogs.flexerasoftware.com/installtalk/2011/10/i-take-it-all-back-using-windows-installer-msi-rollback-actions.html

http://www.installsite.org/pages/en/isnews/200108/index.htm

其次,如果所有自定义操作都是在进度对话框中更新操作文本,那么根本不需要它。 Flexera不记录此内容,但您可以为通过直接编辑器构建的任何自定义操作设置操作文本。为此,请在“ActionText”表中添加条目,其中“Action”列是自定义操作的名称,“Description”列是您要显示的文本。

答案 1 :(得分:-2)

确定,

所以我发现这篇文章:http://community.flexerasoftware.com/archive/index.php?t-82772.html,基本上说由于我的自定义操作设置为提交执行,因此安装在运行时已经有效完成,因此更新进度没有意义文本。

因此我的情况修复是将我的自定义操作移到InstallFinalize之前并切换到'延迟执行'。

希望这可能有助于某人。