gpt4 book ai didi

windows - InstallShield 在卸载期间使用 installdir 属性运行批处理文件

转载 作者:可可西里 更新时间:2023-11-01 10:44:17 24 4
gpt4 key购买 nike

我使用的是 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

最佳答案

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

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

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

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

关于windows - InstallShield 在卸载期间使用 installdir 属性运行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33781658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com