【问题标题】:How to find the setup location in an VBScript custom action for InstallShield?如何在 InstallShield 的 VBScript 自定义操作中找到安装位置?
【发布时间】:2011-05-18 18:52:10
【问题描述】:

在 InstallShield 项目中,我有一个 VBScript 自定义操作,它有条件地需要执行与安装一起打包的某个文件。

通常我使用诸如

之类的代码获取vbs的当前目录
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")

如果它返回启动安装的 Setup.exe 的位置,应该可以工作。

但是在运行安装时,当前路径(在 XP 上)是 C:\Windows\system32,而不是我期望的 Setup.exe 文件的位置。

假设我的 InstallShield 构建的输出如下所示

Disk1
->Setup.exe
->ISSetupPrerequisites
-->Req1
-->Req2
-->...
->OtherReqs
-->ConditionallyRunMe.exe

如何从 VBScript 自定义操作中运行“\OtherReqs\ConditionallyRunMe.exe”?

谢谢!!

(注意:我知道有一些方法可以有条件地从 InstallShield 运行 exe 文件,但在这种情况下,InstallShield 不支持这些要求 - 除非有办法使用 VBScript 自定义操作返回值作为运行条件另一个文件?)

【问题讨论】:

    标签: vbscript installshield custom-action


    【解决方案1】:

    经过一番折腾,我得到了它(实际上是在 InstallShield 手册中找到的,而不是在 Google 中找到的,看图 :))!

    这行 VBScript 可以解决问题

    disk1Path = Session.Property("SETUPEXEDIR")
    

    上面的行指向安装 exe 文件所在的位置,因此从那里运行安装媒体中包含的任何 exe 都是微不足道的。

    我发现的其他有用的,我将在这里参考以供参考

    'points to app data\downloaded install directory
    MsgBox Session.Property("SourceDir")
    'where the software wants to install to on the users system
    MsgBox Session.Property("INSTALLDIR")
    

    不知道为什么很难找到关于 MSI 标准属性的良好参考(即使只是一个列表)。我找到了最接近的was this,但并非所有这些都有效(而且根本不是专门针对InstallShield)。如果有人找到有关 MIS 标准属性及其描述的文档的良好链接,请在此处添加一个链接,因此没有人需要像我一样在这方面浪费太多时间 :)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多