【问题标题】:InstallShield Running batch files during uninstall using installdir propertyInstallShield 在卸载期间使用 installdir 属性运行批处理文件
【发布时间】:2016-02-20 06:47:44
【问题描述】:

我正在使用 InstallShield 2015,项目类型是基本 MSI。我需要在安装过程和卸载过程中运行几个不同的批处理文件。对于安装过程,我创建了一个自定义操作来运行 EXE(或在我的情况下是批处理文件)。工作文件夹是 SystemFolder,命令行如下:

"[SystemFolder]cmd.exe" /c "[INSTALLDIR]PrinterInstaller\installPrinterDriver.cmd" [INSTALLDIR]PrinterInstaller\

这在安装过程中非常有效。卸载过程中出现问题。我有另一个用于卸载的自定义操作:

"[SystemFolder]cmd.exe" /c "[INSTALLDIR]PrinterInstaller\removePrinterDriver.cmd"

上面的这个不起作用。我查看了日志并且 [installdir] 返回默认路径,而不是用户在安装过程中选择的路径。因此,如果用户在安装过程中接受默认安装路径,那么一切都很好。如果他们选择不同的路径,卸载过程将失败。我对此进行了研究,我的错误是在卸载期间我无法使用 INSTALLDIR 属性,因为它将返回默认值。我已经阅读了关于这个主题的几篇文章,我理解这个问题。我在卸载过程中运行的一些自定义安装脚本面临同样的问题。我通过在安装过程中使用注册表存储“用户”选择的安装文件夹然后在卸载过程中检索它来解决这个问题。这行得通。有没有办法将类似的技术应用于运行批处理文件的自定义操作?我的意思是,我能否以某种方式从注册表中查找并摆脱命令行中的 [INSTALLDIR] 语法。

这是一个类似的帖子,但对我来说不是解决方案:

Install file create by InstallShield 2012 sometimes did not get the proper INSTALLDIR when uninstall

【问题讨论】:

  • 注意:我确实有一个自定义操作 SetARPINSTALLLOCATION。仅在安装期间将其设置为 [INSTALLDIR](条件 = 未安装)。当我在命令行中使用 [ARPINSTALLLOCATION] 而不是 [INSTALLDIR] 时,我得到一个空字符串。似乎是一个不错的选择,但在这种情况下不起作用。
  • 提出这个问题的另一种方式是“我需要一个可以用方括号语法引用的公共属性,其中包含实际的安装目录”。
  • 我建议您在问题帖子中包含来自您的 cmets 的所有额外信息,至少以 Note: 开头的那个...
  • 当您说其他帖子不是解决方案时,这是否意味着您确实将文件安装到以 INSTALLDIR 作为其目录的组件中,但在维护期间 INSTALLDIR 不正确?维护日志文件中的 INSTALLDIR 是否正确?
  • 另一篇文章对我来说不是解决方案的原因是(除了不是很清楚之外)发帖人试图从脚本中获取属性 INSTALLDIR。就我而言,我正在尝试使用带有括号语法的自定义操作(类型 34),并且我需要 INSTALLDIR 属性来扩展为正确的(用户选择的)安装路径。另一位发帖人确实提到他解决了他的问题,但他没有提供足够的细节。

标签: windows batch-file installshield


【解决方案1】:

好的,我找到了解决方案。我创建了一个系统搜索来读取注册表并检索可以存储到公共属性中的值。以下是步骤: 1. 创建系统搜索(使用 AppSearch 和 RegLocator 表)。系统搜索将从注册表中查找值并将其存储到我选择的新公共属性(即 REALINSTALLDIR)中。 2. 在安装阶段,正确的安装路径将存储在注册表中,例如 HKLM\software\mycompany\myproduct。确保此处使用的注册表路径和值与系统搜索中使用的路径/值匹配。 3. 更改自定义操作以使用新属性。

"[SystemFolder]cmd.exe" /c "[REALINSTALLDIR]PrinterInstaller\removePrinterDriver.cmd"

REALINSTALLDIR 将包含用户选择的路径或默认路径,如果用户接受默认路径。这会在卸载阶段正确展开,因为系统搜索将在运行时填充该属性。

以下帖子是我回答的关键: http://forum.installsite.net/index.php?showtopic=10773

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-14
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 2016-06-21
    • 2016-03-04
    相关资源
    最近更新 更多