【问题标题】:unable to get install path during the installation in Custom Actions (Merge Module Project) in Install Shield在 Install Shield 的自定义操作(合并模块项目)中安装期间无法获取安装路径
【发布时间】:2017-06-08 20:01:09
【问题描述】:

我在 InstallShiled 的 Merge Module Project 中添加了自定义操作。

PFA:更多信息的屏幕截图。

我已经在合并模块项目的属性管理器中设置了属性。

Key = "CustomActionData", Value = "[INSTALLDIR]"

PFA:截图更多信息。

我已经分享了示例 MSI DLL 源代码。

PFA:截图更多信息。

我已经构建了合并模块并添加到基本 MSI 项目中。

我已经从合并模块文件中添加了自定义操作。

PFA:截图更多信息。

我已经构建了基本的 MSI 项目并且 InstallShield 生成了 setup.exe。

当我运行 setup.exe 时,在自定义操作 MSI DLL 中调用了安装函数。 但它会导致自定义操作数据失败。

PFA:更多信息的屏幕截图。

在 Visual Studio 2010 安装程序上运行同样的问题,但安装屏蔽在使用安装期间无法获取安装路径

UINT gp = ::MsiGetProperty( hInstall,
                               _T("CustomActionData"), 
                               customData, 
                               &len);

【问题讨论】:

    标签: visual-studio-2010 windows-installer installshield custom-action


    【解决方案1】:

    您需要将您正在设置的属性的名称从 CustomActionData 更改为将接收 CustomActionData 的延迟自定义操作的名称。在这种情况下,这将是 CustomActions。

    【讨论】:

    • 嗨,Christopher,我已在合并模块的自定义操作中从“CustomActionData”更改为“Data”。当我执行 setup.exe 时,它​​将得到空消息框。我还测试了延迟执行和立即执行。
    • 我没有写“数据”。我写了“CustomActions”。
    • 嗨,Christopher,我在合并模块的自定义操作中使用了“CustomActions”。当我执行 setup.exe 时,它​​会显示空消息框。
    • 请通过电子邮件将一个小示例项目发送至 chrpai@iswix.com,我会修复并发送回给您。
    • 感谢 Christopher,我已在 InstallShield 论坛上发布了这个问题。 community.flexerasoftware.com/…
    【解决方案2】:

    问题是:您没有使用属性管理器添加属性。

    1. 您需要在 InstallShiled 中自定义操作。

    2. 您需要在自定义操作部分添加“新设置属性”。

    1. 您需要在自定义操作部分填写“新设置属性”的信息。

    1. 属性名称 = 自定义操作名称

      例子:

      属性名称 = “安装”

    2. 您需要在 C++ MSI DLL 源代码中使用“CustomActionData”。

      例子:

      MsiGetProperty(hInstall, _T("CustomActionData"), customData, &len);

    【讨论】:

      猜你喜欢
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多