Inno setup Inno安装程序-替换子安装程序生成的目录树

Inno setup Inno安装程序-替换子安装程序生成的目录树,inno-setup,Inno Setup,在Inno安装脚本中,我运行一个VB可执行程序,该程序安装一个自定义VB应用程序(这里可以正常工作,没有问题) 但一旦完成,在VB设置完成后,我需要复制一些文件以覆盖由VB设置可执行文件创建的文件和文件夹。 这些“更新”的文件已经由Inno安装程序在[files]部分中放置在其临时文件夹中,并且它们已成功部署到目标PC的该文件夹中 问题是,无论我尝试了什么,似乎出于某种原因,FileCopy命令被忽略了 因此,我需要的步骤如下: //复制必须运行的VB安装程序可执行文件,并复制将在VB安装程序运

在Inno安装脚本中,我运行一个VB可执行程序,该程序安装一个自定义VB应用程序(这里可以正常工作,没有问题)

但一旦完成,在VB设置完成后,我需要复制一些文件以覆盖由VB设置可执行文件创建的文件和文件夹。 这些“更新”的文件已经由Inno安装程序在
[files]
部分中放置在其临时文件夹中,并且它们已成功部署到目标PC的该文件夹中

问题是,无论我尝试了什么,似乎出于某种原因,
FileCopy
命令被忽略了

因此,我需要的步骤如下:

//复制必须运行的VB安装程序可执行文件,并复制将在VB安装程序运行后更新VB安装程序的文件

[Files]
    Source: "C:\##Deploy\Titan\LABORATORY\BTLABSETUP.msi"   ; DestDir: "{app}\Temp"  ; Components: Laboratory ; Permissions: users-full
    Source: "C:\##Deploy\Titan\LABORATORY\BetolinkLAB\*.*"   ; DestDir: "{app}\Temp" ; Components: Laboratory ; Permissions: users-full ;  Flags: ignoreversion recursesubdirs 
然后我运行VB安装程序(运行正常)

在VB可执行文件之后,我需要立即复制并覆盖这些文件

因此,我现在需要的是在目标计算机上复制已复制到临时文件夹中的文件和文件夹,以替换由VB可执行文件创建的相同目录结构中的文件

例如,从temp\Configuration文件夹中获取所有文件,并覆盖{app}\Configuration文件夹中存在的相同文件

这就是为什么我使用了我找到的afterinstall示例:它调用
CopyAllFiles
,这是我的
CopyAllFiles

过程复制所有文件;
开始
MsgBox('即将复制文件',mbInformation,MB_OK);
文件副本(“{app}\Temp\*.*”、“{app}\*.*”,False)
文件副本(“{app}\Temp\Configuration\*.*”、“{app}\Configuration\*.*”,False)
文件副本(“{app}\Temp\Configuration\Korinthos\*.*”,“{app}\Configuration\Korinthos\*.*”,False)
文件副本(“{app}\Temp\Configuration\Metamorfosi\*.*”,“{app}\Configuration\Metamorfosi\*.*”,False)
文件副本(“{app}\Temp\Manual\*.*”、“{app}\Manual\*.*”,False)
文件副本(“{app}\Temp\ScriptsUpload\*.*”、“{app}\ScriptsUpload\*.*”,False)
文件副本(“{app}\Temp\Temp\*.*”、“{app}\Temp\*.*”,False)
文件副本(“{app}\Temp\Templates\*.*”、“{app}\Templates\*.*”,False)
文件副本(“{app}\Temp\Temporary\*.*”、“{app}\Temporary\*.*”,False)
结束;
临时源中的所有文件和文件夹都在那里,我已经检查过了,没有丢失任何东西。 我也尝试过不使用目标的通配符,也不起作用,在
CurStepChanged
中尝试过,但没有更好的效果

从弹出的消息框中,我知道代码在VB可执行文件之后进入
CopyAllFiles
过程,但什么也没有发生

任何帮助或解决方法都是非常受欢迎的,需要为客户准备此设置,而且已经很晚了,而且已经卡住了

谢谢你

Yannis

文件副本只能复制单个文件

要复制整个目录树,请参见


尽管在您的情况下,在处理
[Files]
部分之前,以编程方式安装
.msi
不是更合适(也更容易实现)吗?然后让
文件
部分直接将文件安装到
{app}

  • 使用with
    ssInstall
    在实际安装之前执行代码
  • 使用执行
    .msi

FileCopy
不支持通配符。此函数用于将单个文件复制到新目标。在这种情况下,您必须使用这里这样的循环迭代文件夹中的文件。或者,您可以将其作为
外部
源文件放入
[文件]
部分,并使用附加的
检查
或/和
安装前
功能(其中
安装前
可以触发VB的安装)。
[Run]
    Filename: "msiexec.exe"; Parameters: "/i ""{app}\Temp\BTLABSETUP.msi" ; AfterInstall: CopyAllFiles