打包软件InstallShield提示和技巧:MSI的可执行自定义操作

MSI自定义操作的最常用类型之一是启动可执行文件的操作。此类操作通常用于打开当前安装所安装的文档,或启动系统可执行文件以执行Windows Installer不直接支持的系统更改。本文将会详细介绍MSI的可执行自定义操作。

    InstallShield是构建Windows安装程序和MSIX包并直接在Microsoft Visual Studio中创建安装的最快速最简单的方法。借助InstallShield,您可以快速适应行业的变化,更快地进入市场并提供引人入胜的客户体验。      

InstallShield最新试用版  


MSI的可执行自定义操作

    自定义操作的最常用类型之一是启动可执行文件的操作。此类操作通常用于打开当前安装所安装的文档,或启动系统可执行文件以执行Windows Installer不直接支持的系统更改。使用这种类型的自定义操作启动的可执行文件可以由当前安装来安装,已经位于目标系统上,或者可以流式传输到MSI数据库的Binary表中。

    例如,假设您要从目标系统的Windows目录中启动记事本的副本。首先,打开自定义动作和序列视图,右键单击自定义动作图标,然后选择New EXE(新建EXE)>Path referencing a directory(引用目录的路径)。

    在工作目录设置中,输入WindowsFolder,该目录属性表示可执行文件的位置。在文件名和命令行设置中,输入可执行文件名称notepad.exe。

1.jpg

    如果正在启动的可执行文件在目标系统上的目录中,则必须将自定义操作放在标准CostFinalize操作之后。CostFinalize操作设置目录属性的值,并且尝试引用目录属性(例如WindowsFolder或SystemFolder)将导致运行时错误2732,在Windows Installer帮助库中将其描述为未初始化目录管理器。

    在这种情况下,由于Notepad.exe存在于目标系统上,因此可以在CostFinalize操作之后将此自定义操作放置在用户界面序列或执行序列(或两者)中。不必指定延迟执行,也不必先执行InstallFiles操作。

    可执行的自定义操作除了作为命令行参数传递的那些属性外,无权访问安装属性。 命令行参数的典型用法是将文档的路径传递给正在启动的可执行文件。例如,假设您要在发生数据传输后使用Notepad.exe启动自述文件。 在这种情况下,自定义操作的文件名和命令行设置可能显示为:notepad.exe “[INSTALLDIR]Readme.txt”

    如果文件路径包含任何空格,大多数可执行文件都需要在参数周围加上引号。

    必须在标准InstallFiles操作之后安排启动可安装的可执行文件的动作或打开正在安装的文档的动作,以便推迟执行。在即时模式下,数据传输尚未开始。并且在InstallFiles之前的延迟模式下,文档和可执行文件不会被放置在目标系统上。

2.jpg

    Not Installed(未安装)条件确保仅在首次安装过程中运行操作(即显示自述文件),而不在维护模式或卸载过程中运行。

    为确保该操作仅在首次完整UI安装期间运行,您可以使用条件(未安装)和(UILevel = 5)。进一步的可能改进是使用组件操作条件($ ComponentName = 3)将操作与包含自述文件的组件相关联。

推荐文章:

MSI功能和组件的使用

从自定义操作写入日志文件PDF文档


如果您想要购买正版授权InstallShield,可以联系在线客服>>咨询相关问题。

关注慧聚IT微信公众号了解产品的最新动态及最新资讯。

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年11月1日
下一篇 2019年11月1日

相关推荐

发表回复

登录后才能评论