在Inno Setup脚本中,我运行一个安装自定义VB应用程序的VB可执行程序(这里没有问题)。
但是一旦完成,VB设置完成后,我需要复制一些文件来覆盖VB安装程序可执行文件创建的文件和文件夹。
这些'已更新'文件已由[Files]
部分中的Inno Setup放置在其临时文件夹中,并且已成功部署到该文件夹中的目标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 Setup(运行正常)
[Run]
Filename: "msiexec.exe"; Parameters: "/i ""{app}\Temp\BTLABSETUP.msi" ; AfterInstall: CopyAllFiles
在VB可执行文件之后,我需要复制并覆盖文件。
所以我现在需要的是复制目标计算机,已复制到Temp文件夹的文件和文件夹,以替换VB可执行文件创建的同一目录结构中的文件。
因此,例如,从temp \ Configuration文件夹中获取所有文件,并覆盖{app} \ Configuration文件夹中现有的相同文件。
这就是为什么我在一个示例中使用了我发现的postinstall:调用了CopyAllFiles
,这是我CopyAllFiles
的代码
procedure CopyAllFiles;
begin
MsgBox('About to Copy the files', mbInformation, MB_OK);
FileCopy('{app}\Temp\*.*' , '{app}\*.*' , False)
FileCopy('{app}\Temp\Configuration\*.*' , '{app}\Configuration\*.*' , False)
FileCopy('{app}\Temp\Configuration\Korinthos\*.*' , '{app}\Configuration\Korinthos\*.*' , False)
FileCopy('{app}\Temp\Configuration\Metamorfosi\*.*' , '{app}\Configuration\Metamorfosi\*.*', False)
FileCopy('{app}\Temp\Manual\*.*' , '{app}\Manual\*.*' , False)
FileCopy('{app}\Temp\ScriptsUpload\*.*' , '{app}\ScriptsUpload\*.*' , False)
FileCopy('{app}\Temp\Temp\*.*' , '{app}\Temp\*.*' , False)
FileCopy('{app}\Temp\Templates\*.*' , '{app}\Templates\*.*' , False)
FileCopy('{app}\Temp\Temporary\*.*' , '{app}\Temporary\*.*' , False)
end;
Temp源中的所有文件和文件夹都在那里,我已经检查过它们,没有遗漏任何东西。
我也尝试过没有通配符的目标,也没有用,在CurStepChanged
尝试但没有更好。
从弹出的消息框中,我知道代码在VB可执行文件之后进入CopyAllFiles
过程,但什么也没发生。
任何帮助或解决方法都非常受欢迎,需要为客户准备此设置并且已经很晚并且卡住...
谢谢你 雅尼斯
答案 0 :(得分:1)
FileCopy
只能复制一个文件。
要复制整个目录树,请参阅
Inno Setup: copy folder, subfolders and files recursively in Code section
虽然在您的情况下,在.msi
部分处理之前,以编程方式安装[Files]
会更合适(并且更容易实现)吗?然后让Files
部分直接将文件安装到{app}
?
CurStepChanged
event function和ssInstall
在实际安装之前执行代码。Exec
function执行.msi
。