我在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
答案 0 :(得分:1)
这里有两种可能......
1)因为你说它是MyFile.cfg我会假设它不是.INI或.XML格式。在这种情况下,使用InstallShield文本文件更改视图创建搜索并替换文件。 InstallShield自定义操作支持UAC和Rollback,因此您可以去那里。您可能需要一个非常简单的InstallScript自定义操作来读取OriginalDatabase属性,解析您关心的部分并将其分配给另一个属性。然后在“文本文件更改”视图中使用该属性。
2)为什么要在.cfg文件中输入?什么应用程序读取这些值?重构不需要cfg文件。 Windows Installer公开了一个API,允许您查询安装程序服务以获取与已安装产品相关的信息。您可以向MSI询问已安装的应用程序的MSI名称,然后将该信息用于您需要的任何内容。将逻辑放在应用程序中并简化部署故事,以获得更强大的安装程序体验。
答案 1 :(得分:0)
你说这一切都错了。应始终在安装初始化和安装完成之间推迟和调度修改机器状态的自定义操作。如果不这样做,将在UAC环境中中断,也不支持失败时的事务回滚。
这些XML文件是?我使用installinitialize之后安排的即时自定义操作来将临时记录发送到各种MSI表中。这个概念是利用DuplicateFiles将文件克隆到基于MSI名称的名称。如果您需要修改文件,您还可以完成一些工作。正确完成,您的安装程序仍将具有完全回滚功能,并在广告/ UAC方案中工作。
此外,VB / JScript自定义操作不是reliable。