Inno Setup-如何安装Windows Update脱机安装程序

克里斯·林奇

我正在编写一个功能,该功能将为我的设备安装必需的组件,该组件基于PowerShell。如果找不到特定版本的PowerShell,我希望安装程序帮助用户安装它。我遇到的问题是如何正确调用脱机安装程序进行安装。这是我拥有的代码,它是一个通用函数(我正在使用InnoSetup Dependency Installer):

function SmartExec(product : TProduct; var resultcode : Integer): boolean;
begin
    if (LowerCase(Copy(product.File, Length(product.File) - 2, 3)) = 'exe') then begin
        Result := Exec(product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode);
    end else begin
        Result := ShellExec('', product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode);
    end;
end;

我尝试使用以下方法:

function SmartExec(product : TProduct; var resultcode : Integer): boolean;
begin
    if (LowerCase(Copy(product.File, Length(product.File) - 2, 3)) = 'exe') then begin
        Result := Exec(product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode);
  end else if (LowerCase(Copy(product.File, Length(product.File) - 2, 3)) = 'msu') then begin
        Result := ShellExec('', 'wusa.exe ' + product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode);
    end else begin
        Result := ShellExec('', product.File, product.Parameters, '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultcode);
    end;
end;

当我编译并测试安装程序时,会遇到以下问题:

在此处输入图片说明

我将/quiet /norestart参数作为参数传递给MSU文件,该文件可以在命令提示符下完美执行。

安装文件已下载到%tmp%当前用户,我可以看到该文件。

有任何帮助或意见吗?

马丁·普里克里(Martin Prikryl)

.msu扩展名与关联wusa.exe,因此现有分支ShellExec('', product.File, ...)应完成此工作。您不需要添加特定的msu分支。


无论如何,特定的分支可以帮助调试,因此值得尝试。

ShellExec函数的第二个参数FileName,当您传入时wusa.exe xxx.msu,它不是有效的文件名。

这应该工作:

Result := ShellExec('', 'wusa.exe', product.File + ' ' + product.Parameters, ...);

尽管使用ShellExec来运行可执行文件是一个过大的选择,但应使用普通Exec函数

Result := Exec('wusa.exe', product.File + ' ' + product.Parameters, ...);

Exec返回False时,ResultCode是Windows错误代码解释为什么执行失败。您将得到代码3,这是什么ERROR_PATH_NOT_FOUND系统找不到指定的路径。)。

因此,看来您使用的路径(product.File)无效。

确保将完整路径传递给.msu,而不仅仅是文件名。

在调用之前尝试记录路径,Exec并检查文件是否存在。您可以使用:

Log(Format('Path is [%s], Exists = %d', [product.File, Integer(FileExists(product.File))]));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Inno Setup安装JRE?

来自分类Dev

Inno Setup:仅在非常安静时安装

来自分类Dev

Inno Setup .net Framework自动安装程序问题

来自分类Dev

如何从Inno Setup安装程序设置全局环境变量?

来自分类Dev

Inno Setup-用于多个安装程序的安装程序

来自分类Dev

Inno Setup“安装完成”向导页面

来自分类Dev

如何从注册表获取Office的安装目录以安装Inno Setup安装程序

来自分类Dev

在Inno Setup中取消安装

来自分类Dev

Inno Setup禁用安装向导页面

来自分类Dev

Inno Setup-防止同时执行多次安装程序

来自分类Dev

Inno Setup:/ verysilent安装后如何自动运行程序?

来自分类Dev

Microsoft SmartScreen-使用Inno Setup安装程序已暂停?

来自分类Dev

Inno Setup:如何将安装程序本身放入已安装的程序中

来自分类Dev

当Inno Setup安装失败时(在安装程序本身内),如何调用exe?

来自分类Dev

如何在Inno Setup中最小化安装程序?

来自分类Dev

如何使Inno Setup安装程序仅安装在Windows服务器版本上

来自分类Dev

Inno Setup在安装程序中指定日志名称

来自分类Dev

Inno Setup:在卸载过程中从安装程序读取文件

来自分类Dev

根据在线文件设置Inno Setup安装程序版本

来自分类Dev

使用Inno Setup为Python创建Windows安装程序

来自分类Dev

Inno Setup:仅在不静音时安装

来自分类Dev

Inno Setup-用于多个安装程序的安装程序

来自分类Dev

Inno Setup“安装完成”向导页面

来自分类Dev

Inno Setup安装程序可以设置Windows安全组吗?

来自分类Dev

Inno Setup禁用安装向导页面

来自分类Dev

如何解压缩Inno Setup安装程序

来自分类Dev

如何使Inno Setup安装程序仅安装在Windows服务器版本上

来自分类Dev

使用Inno Setup创建透明的安装程序?

来自分类Dev

使用 Inno Setup 安装程序安装 Windows shell 扩展 DLL

Related 相关文章

  1. 1

    如何从Inno Setup安装JRE?

  2. 2

    Inno Setup:仅在非常安静时安装

  3. 3

    Inno Setup .net Framework自动安装程序问题

  4. 4

    如何从Inno Setup安装程序设置全局环境变量?

  5. 5

    Inno Setup-用于多个安装程序的安装程序

  6. 6

    Inno Setup“安装完成”向导页面

  7. 7

    如何从注册表获取Office的安装目录以安装Inno Setup安装程序

  8. 8

    在Inno Setup中取消安装

  9. 9

    Inno Setup禁用安装向导页面

  10. 10

    Inno Setup-防止同时执行多次安装程序

  11. 11

    Inno Setup:/ verysilent安装后如何自动运行程序?

  12. 12

    Microsoft SmartScreen-使用Inno Setup安装程序已暂停?

  13. 13

    Inno Setup:如何将安装程序本身放入已安装的程序中

  14. 14

    当Inno Setup安装失败时(在安装程序本身内),如何调用exe?

  15. 15

    如何在Inno Setup中最小化安装程序?

  16. 16

    如何使Inno Setup安装程序仅安装在Windows服务器版本上

  17. 17

    Inno Setup在安装程序中指定日志名称

  18. 18

    Inno Setup:在卸载过程中从安装程序读取文件

  19. 19

    根据在线文件设置Inno Setup安装程序版本

  20. 20

    使用Inno Setup为Python创建Windows安装程序

  21. 21

    Inno Setup:仅在不静音时安装

  22. 22

    Inno Setup-用于多个安装程序的安装程序

  23. 23

    Inno Setup“安装完成”向导页面

  24. 24

    Inno Setup安装程序可以设置Windows安全组吗?

  25. 25

    Inno Setup禁用安装向导页面

  26. 26

    如何解压缩Inno Setup安装程序

  27. 27

    如何使Inno Setup安装程序仅安装在Windows服务器版本上

  28. 28

    使用Inno Setup创建透明的安装程序?

  29. 29

    使用 Inno Setup 安装程序安装 Windows shell 扩展 DLL

热门标签

归档