-2

我正在使用 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 在批处理文件完成运行之前不会返回。

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

应该正常工作吗?

还有其他人经历过吗?

4

2 回答 2

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”列是您要显示的文本。

于 2013-06-17T05:42:10.690 回答
-2

行,

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

因此,针对我的情况的解决方法是将我的自定义操作移到 InstallFinalize 之前并切换到“延迟执行”。

希望这可能对某人有所帮助。

于 2012-08-31T08:28:04.033 回答