我知道FileCopy
功能可用于在[Code]
部分复制文件,并能正常工作对于大多数的目的。但是,有没有办法来调用本地Windows文件复制操作,使标准的Windows文件复制对话框,进度,剩余时间等显示(即同做Ctrl+C
,其次为Ctrl+V
),这也将允许用户取消或暂停复制操作中期过程?或者更好的是,有没有办法直接在[Code]
部分复制类似的功能?Inno Setup的调用或复制本地Windows文件复制操作
1
A
回答
1
使用SHFileOperation
与FO_COPY
:
type
TSHFileOpStruct = record
hwnd: HWND;
wFunc: UINT;
pFrom: string;
pTo: string;
fFlags: Word;
fAnyOperationsAborted: BOOL;
hNameMappings: HWND;
lpszProgressTitle: string;
end;
const
FO_COPY = $0002;
FOF_NOCONFIRMATION = $0010;
function SHFileOperation(lpFileOp: TSHFileOpStruct): Integer;
external '[email protected] stdcall';
procedure ShellCopyFile;
var
FromPath: string;
ToPath: string;
FileOp: TSHFileOpStruct;
begin
FromPath :=
ExpandConstant('{src}\data1.dat') + #0 +
ExpandConstant('{src}\data2.dat') + #0;
ToPath := ExpandConstant('{app}') + #0;
FileOp.hwnd := WizardForm.Handle;
FileOp.wFunc := FO_COPY;
FileOp.pFrom := FromPath;
FileOp.pTo := ToPath;
FileOp.fFlags := FOF_NOCONFIRMATION;
if SHFileOperation(FileOp) <> 0 then
begin
MsgBox('Copying failed.', mbError, MB_OK);
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
ShellCopyFile;
end;
end;
的代码是Inno Setup的的Unicode版本。
+0
谢谢马丁。这看起来非常完美。是否有可能通过它复制多个文件?它看起来像一次仅限于一个文件? –
+1
当然,这是可能的。请参阅['SHFILEOPSTRUCT'结构(https://msdn.microsoft.com/en-us/library/windows/desktop/bb759795.aspx)和我的编辑答案文档。其实我以前的代码有一个错误。您可以使用文件列表或通配符为操作指定多个文件。 –
相关问题
- 1. Inno Setup - 文件复制
- 2. Inno Setup复制文件夹的脚本
- 3. 在Inno Setup中复制隐藏文件
- 4. 安装完成后使用inno setup复制文件
- 5. 在inno脚本中复制文件夹
- 6. 如何在Inno Setup中记录文件复制过程
- 7. TFBuild本地文件复制
- 8. Inno Setup/SUPPRESSMSGBOXES定制
- 9. Inno Setup:将文件复制到用户定义的多个目标
- 10. 如何让用户浏览到要与Inno Setup一起复制的文件
- 11. 文件复制操作的Android
- 12. Inno设置和复制文件
- 13. Inno Setup:如何使用Flags:external在[Files]中从CD-ROM复制文件?
- 14. 复制文件到本地文件夹
- 15. 使用curl复制本地文件
- 16. 文件复制操作错误android
- 17. 如何使用inno脚本动态复制文件?
- 18. INNO SETUP:编译限制
- 19. 复制Saltstack中的本地文件
- 20. 用于复制或更新jar文件的Windows脚本不起作用
- 21. 从本地调用复制位图
- 22. 复制本地 - .dlls不被复制
- 23. “异地”复制到做操作
- 24. 复制文件复制
- 25. 在本地网络中复制文件
- 26. 复制文件从本地到HDFS
- 27. UiAlertView与UIProgressView在本地复制文件
- 28. 将文件从本地复制到Hadoop
- 29. Hadoop将本地文件复制到HDFS?
- 30. 制作文件夹和复制文件
在Windows SHFileOperation()API(或更不容易IFileOperation)是你必须在代码中调用来完成什么。 –