Página 1 de 1
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 13:26
por porter
ola pessoal, estou tentando deletar um arquivo em tempo de execução mas não apaga, não da erro, mas nao apaga, estou fazendo assim:
FERASE("CONTAS.EXE")
Windows 7 64 bits, xHarbour
obrigado.
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 14:37
por Kapiaba
Tente assim, se o contas.exe nao estiver em uso no momento.
abs.
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 15:34
por porter
ola Kapiaba, eu quero apagar o executavel mesmo, outro arquivo, esse comando que você passou da certo, mas se for o executavel ele não apaga.
obrigado.
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 15:42
por Kapiaba
Perguntas:
1 - você está usando o CONTAS.EXE , na hora em que dá o comando?
2 - O CONTAS.EXE está no local? Senão estiver, aponte o local, ex.: "C:\DIR\CONTAS.EXE"
FERASE "C:\TEMP\CONTAS.EXE"
Podeis tentar também, via .BAT com o comando /Y para que o .BAT, não peça confirmação de exclusão.
abs.
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 15:49
por porter
sim, ele está no mesmo diretorio, a intenção é que se a data ultrapassar uma data limite pré determinada, eu quero apagar o executavel, na hora que acessar o sistema, será verificado uma data limite, se essa data limite for maior, quero deletar o executavel, acho que por estar em uso, nao esta deletando.
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 16:02
por Kapiaba
Veja se entende, como pegar a data do excutavel em xHarbour - Ignore a mensagem em FiveWin
Código: Selecionar todos
LOCAL cFile, aDir, dExe
IF FILE( "C:\INST_NFE\NFe_Util_2Gv2.03a.exe" )
cFILE := "C:\INST_NFE\NFe_Util_2Gv2.03a.exe" // 03/09/2014
aDIR := DIRECTORY( cFILE ) // para extrair a data do .EXE
dEXE := aDIR[1] [3] // Data do .exe no diretorio C:\INST_NFE
cVersaoFlex := DTOC( dEXE ) + " - " + OemToAnsi( "VersÆo: 2Gv2.03a" )
// 06/11/2014 15:23 2.131.568 NFe_Util_2Gv1.1f_PL006p.exe
ELSEIF FILE( "C:\INST_NFE\NFe_Util_2Gv1.1f_PL006p.exe" )
cFILE := "C:\INST_NFE\NFe_Util_2Gv1.1f_PL006p.exe" // 06/11/2013
aDIR := DIRECTORY( cFILE )
dEXE := aDIR[1] [3] // Data do .exe no diretorio C:\INST_NFE
cVersaoFlex := DTOC( dEXE ) + " - " + OemToAnsi( "VersÆo: 2Gv1.1f" )
ELSE // Ignore a mensagem em Fivewin, ponha em modo console.
MsgStop( OemToAnsi( "ATEN€ÇO USUµRIO: CUIDADO!" )+CRLF+ ;
OemToAnsi( "NECESSµRIO A PARTIR DA VERSÇO 3.71 DA NF-E." )+CRLF+ ;
OemToAnsi( "O INSTALADOR DA FLEXDOCS NÇO FOI LOCALIZADO" )+CRLF+ ;
OemToAnsi( "NO DIRETàRIO C:\INST_NFE " )+CRLF+ ;
OemToAnsi( "INFORME ESTE PROBLEMA AO SUPORTE URGENTE! " )+CRLF+ ;
OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ;
OemToAnsi( "O INSTALADOR DA FLEXDOCS NÇO FOI LOCALIZADO" ) )
dEXE := " " // nao achou o executavel
ENDIF
abs
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 16:09
por Kapiaba
use o comando: DIRECTORYRECURSE para saber qualquer coisa em seu HD/diretório.
Código: Selecionar todos
* $Id: dirtest4.prg,v 1.2 2004/03/03 04:48:39 ronpinkas Exp $
*
* Test program for extended DirectoryRecurse()
*
* Syntax : DirectoryRecurse( <cPath> )
*
* cPath = wild card skleton including path name
*
* Andi Jahja
*
//------------------------------------------------
PROCEDURE Main()
? "Will get ALL *.EXE file in C:\WINDOWS and SUB folders. Press any key ...."
Inkey(0)
? "Working ..."
Showit( DIRECTORYRECURSE( "C:\WINDOWS\*.EXE" ) )
?
? "Will get ALL *.DLL file in C:\WINDOWS and SUB folders. Press any key ...."
Inkey(0)
? "Working ..."
ShowIt( DIRECTORYRECURSE( "C:\WINDOWS\*.DLL" ) )
? "Will get ALL *.OCX files in C:\WINDOWS and SUB folders. Press any key ...."
Inkey(0)
? "Working ..."
ShowIt( DIRECTORYRECURSE( "C:\WINDOWS\*.OCX" ) )
? "Will get ALL *.PRG file in CURRENT and SUB folders. Press any key ...."
Inkey(0)
? "Working ..."
ShowIt( DIRECTORYRECURSE( "*.PRG" ) )
RETURN
//------------------------------------------------
STATIC PROCEDURE ShowIt( aDir )
LOCAL aFile
FOR EACH aFile IN aDir
? PadR( aFile[1], 38 ), Transform( aFile[2], "999,999,999,999" ), aFile[3], aFile[4], aFile[5]
NEXT
?
? Len( aDir), "files listed."
?
RETURN
Abs
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 16:11
por porter
Eu quero fazer assim, não sei se tem jeito, o executavel ele nao apaga, outro arquivo qualquer ele apaga normalmente.
Se data de hoje for maior que 14/12/2014
if data > 14/12/2014
deletar o arquivo CONTAS.EXE
endif
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 16:18
por Kapiaba
Para fazer isto, vc. tem que finalizar o programa, +- assim:
https://pctoledo.org/forum/viewto ... ill#p88468
abs.
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 17:13
por paiva
Boa
se o exe esta em uso somente renomeando ele para depois deletar.
se quiser matar a execução dele posso passar um kill.exe que uso para matar prg em execução.
sempre que preciso atualizar um exe faço um loop para renome-alo
senão não vai conseguir
se precisar mando ou posto aqui a rotina
Paiva
FERASE nao funcionando para deletar arquivo
Enviado: 15 Dez 2014 23:40
por rochinha
Amiguinho,
Em tempo de execução não é possivel você derrubar o aplicativo. O aplicativo não é louco de cometer suicídio, ka,ka,ka.
Eu entendo o seu procedimento como se estivesse atualizando o aplicativo em uso.
Você, ordena que o aplicativo se feche, mas precisa antes ordenar outro procedimento ou script.
Ao invés de deletar o arquivo, apenas não permita sua execução.
Entenda que se voce presta serviço para alguém e deste serviço consta que ele usará seu aplicativo, o executável é posse do contratante. Você estipula em contrato um período pelo qual "aguarda" o restauro do serviço por parte do contratante no que tange os pagamentos mensais e só depois de X tempo voce pode rescindir o contrato e eliminar o aplicativo.
Coloque data para que ele pare, mas que continue lá.
Coloque verificações para impedir de o usuário retornar a data do computador e continuar usando o aplicativo. Grave no registro, arquivo .MEM, CONFIG.COM, MSDOS.SIS, qualquer coisa e deixe esta data de expiração protelar por alguns dias após o vencimento.
FERASE nao funcionando para deletar arquivo
Enviado: 16 Dez 2014 08:25
por paiva
Uso assim a Mais de 10 anos sem problema
inclusive pelo ts que Todos meus clientes usam
Paiva
function __atualiza_exe
dir_atual = upper(curdrive()+':\'+curdir())
dir_dbdc = upper(curdrive()+':\dbdc')
Wretdir := dirchange(dir_dbdc)
MMDrv := "\dbdc\atualiza.exe" && baixar em:
xMMDrv := "www/exe/atualiza.exe" && Pegar de:
arqftp = [atualiza.exe]
tamaftp = 0
meuftp('3',arqftp,xMMDrv) && dir
x_tempo_demora = [Dever DEMORAR de 3 a 5 Minutos ... DEPENDENDO da velocidade de SUA InterNet. ]
meuftp('2',arqftp,xMMDrv) && download
mydir := directory(arqftp)
tamadis := if(len(mydir) > 0 , mydir[1,2] , 0)
if tamadis # tamaftp
pmsg = " ATEN€ÇO - POR Algum MOTIVO o DOWNLOAD da Atualiza‡Æo N¶O foi feito CORETAMENTE. AGUARDE uns Minutos... e TENTE outra vez. Caso N¶O consiga BAIXAR Corretamente, CONTACT o SUPORTE."
ftempo(5)
ferase(arqftp)
else
* ATUALIZA€¶O do sfa.exe
xarq = [\dbdc\atualiza.exe]
if file(xarq)
for x_existe = 1 to 100
xarq = [\dbdc\sfa.]+strzero(x_existe,3)
erase &xarq
if file(xarq)
loop
endif
exit
next
rename \dbdc\sfa.exe to &xarq
rename \dbdc\atualiza.exe to \dbdc\sfa.exe
pmsg = [ATEN€¶O - Foi ATUALIZADO o Execut vel, Re-Inicie o Sistema Novamente, Obrigado]
ftempo()
quit
endif
endif
Wretdir := dirchange(dir_atual)
FERASE nao funcionando para deletar arquivo
Enviado: 16 Dez 2014 08:47
por Pablo César
rochinha escreveu:Em tempo de execução não é possivel você derrubar o aplicativo. O aplicativo não é louco de cometer suicídio, ka,ka,ka.
Eu entendo o seu procedimento como se estivesse atualizando o aplicativo em uso.
Você, ordena que o aplicativo se feche, mas precisa antes ordenar outro procedimento ou script.
Ao invés de deletar o arquivo, apenas não permita sua execução.
Entenda que se voce presta serviço para alguém e deste serviço consta que ele usará seu aplicativo, o executável é posse do contratante. Você estipula em contrato um período pelo qual "aguarda" o restauro do serviço por parte do contratante no que tange os pagamentos mensais e só depois de X tempo voce pode rescindir o contrato e eliminar o aplicativo.
Coloque data para que ele pare, mas que continue lá.
Coloque verificações para impedir de o usuário retornar a data do computador e continuar usando o aplicativo. Grave no registro, arquivo .MEM, CONFIG.COM, MSDOS.SIS, qualquer coisa e deixe esta data de expiração protelar por alguns dias após o vencimento.
Concordo 100% com o que o colega Rochinha disse. A rotina de atualização, deverá ser baixado em diretório temporário e a espera que o usuário feche o aplicativo e jamais ser apagado. Derrubar a aplicação é algo muito sério ! Depois o usuário poderá encontrar problemas na base de dados. Há conceitos que devem ser revisto e tudo deve funcionar de forma segura, completa e atendendo sempre a ética. Se o usuário questionasse o porquê o executável sumiu a uma Microsoft ou qualquer empresa grande de software, seria causa ganha. mesmo tenha expirado o período de utilização.