【问题标题】:Custom Action failing to execute during installation created with Installshield 16使用 Installshield 16 创建的安装期间无法执行自定义操作
【发布时间】:2018-01-18 00:29:10
【问题描述】:

我过去曾使用 Installshield Limited Edition for Visual Studio 运行此自定义操作,并且它已经成功了。但是现在当我在 Installshield 2016 中尝试这个时,这个自定义操作给了我一个 1722 错误并回滚安装。日志文件没有提供比“失败,错误 1...”和 1722 错误更详细的信息。

我通过向导设置的自定义操作 -

工作目录:InstallDir

文件名和命令行: "[SystemFolder]cmd.exe" /c "[INSTALLDIR]somefilename.exe" "'%r' '%keyname=keyname' '%keydll=some.dll' '%appexe=[ INSTALLDIR]不同的文件名.exe'"

这应该做的是从命令行运行 somefilename.exe,参数为“%r”、“%keyname”、“%keydll”和“%appexe”。

当我直接在命令行上运行它时 - "C:\Program Files (x86)"\somefilename.exe "%r" "%keyname=keyname" "%keydll=some.dll" "%appexe=C:\Program Files (x86)\differentfilename.exe" -它运行良好。

我想我在某个地方遗漏了一些引号,我尝试了各种组合但没有运气。

任何想法我做错了什么?

提前致谢!

【问题讨论】:

    标签: windows windows-installer installation installshield


    【解决方案1】:

    感谢@PhilDW 的建议。

    我可能会拿出 cmd 外套,然后运行 ​​exe 并尝试。

    通过更改一些引号等,我终于让它工作了。这是最终的文件名和命令行参数的样子:

    "[SystemFolder]cmd.exe" /c start "" /d"C:\Program Files (x86)\foldername\" "somefile.exe" "%r" "%keyname=something" " %keydll=something.dll" "%appexe=C:\Program Files (x86)\otherfilename.exe"

    希望这对某人有所帮助。

    【讨论】:

    • 正是我所需要的!
    【解决方案2】:

    一些建议:

    您应该发布与此相关的详细 MSI 日志部分,因为它应该显示完整的已解析命令行,假设您创建了完整的详细日志而不是部分日志。

    不清楚为什么需要使用 cmd 夹克运行此程序。如果它是一个普通的 Windows 程序,只需将可执行文件作为自定义操作运行。

    当您从交互式用户资源管理器 shell 运行时,您会获得一些基础架构(例如工作目录),而这些基础架构是通过 msiexec.exe 进程启动的自定义操作无法获得的。这很重要,因为您没有指定 some.dll 的显式完整路径,因此它能否找到该文件并不明显。

    说明此自定义操作的运行位置及其类型可能会很有用。例如,如果它变成一个即时自定义操作(所有 VS 自定义操作都被延迟),那么它将失败,因为尚未安装任何文件。同样,如果它被推迟但不知何故在 InstallFiles 标准操作之前它会失败。

    由 Visual Studio 生成的项目运行的所有自定义操作都被延迟并在每个系统的“Everyone”安装中使用系统帐户运行。如果您的自定义操作需要提升,那么它也必须被推迟,并且 MSI 必须显示 UAC 提升对话框,否则它可能会运行但会因访问错误而失败。它可能已成为每个用户安装的非提升。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      相关资源
      最近更新 更多