【问题标题】:Where can I create a custom action that executes after 'installfinalize' in Installshield 2013 Express?我在哪里可以创建在 Installshield 2013 Express 中的“installfinalize”之后执行的自定义操作?
【发布时间】:2014-04-25 16:34:11
【问题描述】:

我已经在 Wix 中管理过这个,但我的同事想在 Installshield 2013 Express 中复制它。我们在 Installshield 中找到了“自定义操作”部分,但我们看不到在哪里可以让它在 Installfinalize 之后运行,它需要在 copyfiles 之后并有 Execute="immediate"copyfiles 之后的所有选项都有Execute="Deferred"

在 Wix 中,我有一个 VBScript,它读取 MSI Session.Property("OriginalDatabase"),然后使用它写入一些由 MSI 安装的配置文件。关键是如果我们重命名 MSI,那么配置会调整以反映 MSI 文件名。

我会发布 IS 自定义操作 UI 的屏幕截图,但我需要“10 声望”才能发布图片 - 所以图片的链接是 -> Here

【问题讨论】:

    标签: vbscript wix installshield


    【解决方案1】:

    这里有两种可能性....

    1) 既然你说它是 MyFile.cfg,我就假设它不是 .INI 或 .XML 格式。在这种情况下,请使用 InstallShield Text Files Changes 视图对文件进行搜索和替换。 InstallShield 自定义操作支持 UAC 和回滚,所以你会很高兴去那里。您可能需要一个非常简单的 InstallScript 自定义操作来读取 OriginalDatabase 属性,解析出您关心的部分并将其分配给另一个属性。然后在 Text Files Changes 视图中使用该属性。

    2) 为什么在 .cfg 文件中有全部内容?什么应用程序读取这些值?将其重构为不需要 cfg 文件。 Windows Installer 公开了一个 API,允许您查询安装程序服务以获取与已安装产品相关的信息。您可以向 MSI 询问已安装应用程序的 MSI 名称是什么,然后将该信息用于您需要的任何内容。将逻辑放入应用程序并简化部署故事,以获得更强大的安装程序体验。

    【讨论】:

    • 嗨克里斯托弗。我喜欢这两个的声音。只是为了确认在 WiX 中没有像这样在 Installshield 中运行 VBScript 的方法吗? 未安装且未修补
    • 可以,但不应该在 WiX 或 IntallShield 中完成。
    • 谢谢。我注意到您评论了另一个类似的请求,其中的答案是关于使用 DTF。某种 C++ 代码。
    【解决方案2】:

    你做错了。修改机器状态的自定义操作应始终延迟并安排在安装初始化和安装完成之间。不这样做将在 UAC 环境中中断,并且也不支持失败时的事务回滚。

    这些是 XML 文件吗?我会使用在 installinitialize 之后安排的即时自定义操作将临时记录发送到各种 MSI 表中。这个概念是利用 DuplicateFiles 将文件克隆为基于 MSI 名称的名称。如果您需要修改文件,您还需要做一些工作。正确完成后,您的安装程序仍将具有完整的回滚功能并在广告/UAC 场景中工作。

    另外,VB/JScript 自定义操作不是reliable

    【讨论】:

    • 您好克里斯托弗,感谢您的回复。也许我最初并不清楚。 MSI 安装一些配置文件。我想更改配置文件中的一些文本。我不想重命名文件。我有一个名为 myfile.cfg 的文件,我想将文本“changeme”更改为我的 msi (myinstaller.1.2.msi) 的名称。我的 VBScript 将文件名修剪为“myinstaller”,然后在 myfile.cfg 中搜索并替换所有“changeme”,并将它们替换为“myinstaller”。我的程序将读取此配置。这意味着我不必为每个客户端构建自定义安装程序,我只需重命名 MSI。
    • 根据修改后的问题提供的新答案。
    猜你喜欢
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多