如何使用 InstallScript 项目 运行 RegAsm /codebase?
How to run RegAsm /codebase with an InstallScript project?
我在 InstallShield 论坛上试过这个问题,但没有得到任何人的喜爱。我的公司有一个 InstallScript 项目(非 MSI),我们需要 运行 RegAsm /codebase 在我们的一个 DLL 上。我在网上找到了一些这样做的教程,但它们似乎不适用于我们的项目类型。也就是说,我需要的选项在UI中根本不存在。这包括此处的建议 (https://www.iwasdot.com/installshield-execute-a-batch-script/) 以及涉及自定义操作的任何内容(正如我从文档中解释的那样,自定义操作不适用于 InstallScript 项目)。我如何使用 InstallScript 完成此操作?我正在使用 InstallShield 2013,但我对它知之甚少。
我已经将近 20 年没有使用 InstallScript 项目了,但我想象你会编写一个 InstallScript 函数来调用 LaunchAppAndWait 来调用 Regasm。
如果我没记错的话,InstallScript 项目类型有类似 After File Copy 的事件,您可以使用这些事件将代码放入其中。
Christopher Painter 是正确的。我得出了同样的结论,并且能够让它发挥作用。如果它对以后的任何人有帮助,我的具体做法如下:
我转到 "Installation Designer" 选项卡的 "Behavior and Logic" 文件夹并选择 "InstallScript"。然后在右侧窗格中,我选择了我的 DLL 关联的功能,然后选择了 "Installed" 事件处理程序。以下脚本为 COM 互操作注册了我的 DLL:
LaunchApplication("C:/Windows/Microsoft.NET/Framework/v4.0.30319/RegAsm.exe",
"../path/to/my.dll /codebase", "",
SW_HIDE, 0, LAAW_OPTION_NOWAIT);
然后我为 "Uninstalled" 事件处理程序做了类似的事情:
LaunchApplication("C:/Windows/Microsoft.NET/Framework/v4.0.30319/RegAsm.exe",
"/unregister ../path/to/my.dll", "",
SW_HIDE, 0, LAAW_OPTION_NOWAIT);
我在 InstallShield 论坛上试过这个问题,但没有得到任何人的喜爱。我的公司有一个 InstallScript 项目(非 MSI),我们需要 运行 RegAsm /codebase 在我们的一个 DLL 上。我在网上找到了一些这样做的教程,但它们似乎不适用于我们的项目类型。也就是说,我需要的选项在UI中根本不存在。这包括此处的建议 (https://www.iwasdot.com/installshield-execute-a-batch-script/) 以及涉及自定义操作的任何内容(正如我从文档中解释的那样,自定义操作不适用于 InstallScript 项目)。我如何使用 InstallScript 完成此操作?我正在使用 InstallShield 2013,但我对它知之甚少。
我已经将近 20 年没有使用 InstallScript 项目了,但我想象你会编写一个 InstallScript 函数来调用 LaunchAppAndWait 来调用 Regasm。
如果我没记错的话,InstallScript 项目类型有类似 After File Copy 的事件,您可以使用这些事件将代码放入其中。
Christopher Painter 是正确的。我得出了同样的结论,并且能够让它发挥作用。如果它对以后的任何人有帮助,我的具体做法如下:
我转到 "Installation Designer" 选项卡的 "Behavior and Logic" 文件夹并选择 "InstallScript"。然后在右侧窗格中,我选择了我的 DLL 关联的功能,然后选择了 "Installed" 事件处理程序。以下脚本为 COM 互操作注册了我的 DLL:
LaunchApplication("C:/Windows/Microsoft.NET/Framework/v4.0.30319/RegAsm.exe",
"../path/to/my.dll /codebase", "",
SW_HIDE, 0, LAAW_OPTION_NOWAIT);
然后我为 "Uninstalled" 事件处理程序做了类似的事情:
LaunchApplication("C:/Windows/Microsoft.NET/Framework/v4.0.30319/RegAsm.exe",
"/unregister ../path/to/my.dll", "",
SW_HIDE, 0, LAAW_OPTION_NOWAIT);