如何使用Inno Setup在一个系统上安装多个“站点”,并仅卸载特定的一个?

时间:2009-07-21 14:31:49

标签: inno-setup

我正在部署一个包,用于设置SQL Server 2008和IIS虚拟目录的实例。用户可能希望在同一系统上安装此程序的多个实例,这是有道理的。

我知道我可以在卸载中使用GetPreviousData()来获取最后安装的实例,并卸载该实例。但是,似乎其他安装都会丢失。

例如,假设用户指定的实例名称为“Site1,Site2,Site3”,然后再卸载。 Sites1和Site2可能会成为孤儿,而Site3将被正确卸载。

反正有没有增加它?例如,我可以询问用户在卸载期间要卸载哪个站点,或者我是否必须将其设置为两阶段系统?

1 个答案:

答案 0 :(得分:1)

基本上有两种安装软件包的方法:

  • 使用不同的名称,并为每个安装AppId
  • 所有安装共享相同的名称和AppId

在第一种情况下,用户获取软件小程序中每个实例的图标,因此可以单独卸载它们。在这种情况下,必须保留所有常见组件,直到删除最后一个实例,使用sharedfile标志将有助于此。

在第二种情况下,实例管理与安装或卸载整个包不同。因此,我可能只是创建一个工具来管理包的实例,并在安装和卸载期间执行它。使用Pascal脚本可以执行外部应用程序,并根据执行程序的结果代码跳过进一步的安装或卸载步骤。

实际上,对于除第一次安装和最后一次卸载之外的所有操作,只能通过此工具完成工作。

管理工具甚至可以在程序组中拥有自己的图标,这样就可以在不使用软件控制小程序的情况下添加,修改或删除实例。