Perdon si no me he explicado bien:
Yo me descargé ese archivo de amsfiles y lo probé para ver si funcionaba bien. Vi que el
"Progress" si subia conforme iba copiando. Al ver eso me dije: "Ahora ya tengo el codigo para hacer que el
"Progress" suba en el copiado del archivo, ahora solo tengo que hacer el instalador". Pensado y hecho. Me pusé a crearlo, con sus dudas que me habeis resuelto aquí, y todo bien. Hasta que al copiar un archivo de prueba desde mi programa, vi que cuando lo abria(en este caso un rar) me decía un error:
"final inesperado del archivo". El tamaño total del archivo copiado no llegaba al tamaño del archivo original. Sin embargo, si hago un boton y de codigo pongo que copie ese archivo me lo copia perfectamente y lo abro sin problemas.
En cuanto al archivo que me bajé de amsfiles también ocurre lo mismo(no es que haya modificado nada del script en mi programa, copy & paste) que cuando copia el archivo y lo abro me da el mismo error. Este ejemplo tiene una página y un
"dialog". En el show del dialog esta el File.Copy(.., .., .., .., .., .., funcion_callback), un if(si el copied==total, que salga un mensaje sino return true) y luego pone el progress a 0 i sale del dialog(os pongo el codigo por sino os aclarais):
copia = File.Copy("AutoPlay\\Docs\\archivo.rar", directorio, false, true, true, false, PartialProgress)
if Copied == Total then
result = Dialog.Message("Informacion", "Instalado correctamente", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
else
return true;
end
Progress.SetCurrentPos("Progress1", 0);
DialogEx.Close(0);
El codigo es de mi programa, pero es practicamente lo mismo, solo que sin checkbox.
El destino(directorio) es una variable que cojo desde otra pagina(visto en este tema).
Ahora viene lo importante y donde esta el problema(o eso creo yo), y es en la funcion_callback que he puesto en el codigo. En
"Global Functions" sale la funcion creada y varias lineas más para el tema de las barras de progreso. Aqui va el código:
function PartialProgress(Source, Destination, Copied, Total, FileCopied, FileTotal)
-- Set the file name
SplitDest = String.SplitPath(Destination);
soloExt = SplitDest.Extension
soloFile = SplitDest.Filename;
soloFolder = SplitDest.Folder;
soloDrive = SplitDest.Drive;
stConcat = String.Concat(soloDrive, soloFolder);
if (Source ~= "") then
Label.SetText("Label1", "Copiando archivo "..String.Mid(Source, String.Length(_SourceFolder) +1, -1));
end
-- Update progress1
Progress.SetCurrentPos("Progress2", ((Copied / Total) * 100))
nPercentage = Math.Floor((Copied / Total) * 100);
Progress.SetText("Progress2", "Estado general del copiado al (" .. nPercentage .. "%)...");
Label.SetText("Label2", "A carpeta "..stConcat);
-- Update progress2
CurrentPGR = Progress.GetCurrentPos("Progress1");
-- (CurrentPGR-1)*100 + CurrentPGR
-- 100*(Copied/Total)
nTotalPercentage = Math.Floor((Copied / Total) * 100);
Progress.SetCurrentPos("Progress1", nTotalPercentage);
splittedPath = String.SplitPath(Source);
solofile = splittedPath.Filename;
SetString = "Copiando archivo "..solofile.." "..nTotalPercentage .." %";
Progress.SetText("Progress1", SetString);
if Copied == Total then
Progress.SetText("Progress1", "Terminado!");
Label.SetText("L_Status1", "Copia Terminada!");
Progress.SetText("Progress2", "Copia terminada!");
return false;
else
return true;
end
end
Gracias a los dos por responder tan pronto y disculpas por mi tardía respuesta.