我知道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)是你必須在代碼中調用來完成什麼。 –