Usuário com melhor resposta
Auto destruir aplicação

Pergunta
-
Boa noite,
Estou criando uma aplicação utilizando Windows Forms com C# de demonstração com data de vigência.
Gostaria de saber como fazer para que quando a data de vigência for atingida, o aplicativo seja auto excluído para que o usuário não tenha mais o mesmo.
Obrigado
Respostas
-
Parece que você necessita de permissões de administrador para executar isso, então segue 2 link que vão lhe ajudar nisso.
Basicamente você necessita adicionar um arquivo manisfest e trocar alinha padrão:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
por esta:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
http://www.codeproject.com/Tips/627850/ClickOnce-deployment-vs-requestedExecutionLevel-eq
- Marcado como Resposta Marcos SJ quarta-feira, 10 de fevereiro de 2016 12:44
Todas as Respostas
-
Na inicialização do aplicativo verifique a data do sistema, caso seja igual ou superior à sua data limite para uso, use o método Directory.Delete para apagar o conteúdo da pasta do seu aplicativo.
Instruções aqui: https://msdn.microsoft.com/en-us/library/fxeahc5f%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
Abraço, Carlos F. P. Rocha - Conheça http://www.carlosfprocha.com
-
Você não vai conseguir deletar o Diretório enquanto a aplicação estiver rodando. Neste link tem uma implementação do que você precisa.
http://www.codeproject.com/Articles/31454/How-To-Make-Your-Application-Delete-Itself-Immedia
A solução acima funciona se você abrir a aplicação, mas se você quiser que a aplicação simplesmente desapareça em uma determinada data, sem ação do usuário (clicar apara abrir) você pode:
- Criar um agendamento (Windows Task Scheduler) que executa um desinstalador (um .exe, um .bat ou a própria aplicação).
- Adicionar na inicialização do Windows um executável que verifica se é necessário desinstalar a aplicação
-
-
Bom dia Henrique,
Verifique se o código abaixo funciona para você:
/// <summary> /// Represents the entry point of our application. /// </summary> /// <param name="args">Possibly spcified command line arguments.</param> public static void Main(string[] args) { string batchCommands = string.Empty; string exeFileName = Assembly.GetExecutingAssembly().CodeBase.Replace("file:///",string.Empty).Replace("/","\\"); batchCommands += "@ECHO OFF\n"; // Do not show any output batchCommands += "ping 127.0.0.1 > nul\n"; // Wait approximately 4 seconds (so that the process is already terminated) batchCommands += "echo j | del /F "; // Delete the executeable batchCommands += exeFileName + "\n"; batchCommands += "echo j | del deleteMyProgram.bat"; // Delete this bat file File.WriteAllText("deleteMyProgram.bat", batchCommands); Process.Start("deleteMyProgram.bat"); }
Fonte: StackOverflow
Dessa forma o certo é não abrir nenhum prompt de comando, tornando o processo transparante ao usuário.
Abs.
Bruno Destro
Dicas de programação em .net, C# e SQL - http://smcode.com.br/
-
Parece que você necessita de permissões de administrador para executar isso, então segue 2 link que vão lhe ajudar nisso.
Basicamente você necessita adicionar um arquivo manisfest e trocar alinha padrão:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
por esta:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
http://www.codeproject.com/Tips/627850/ClickOnce-deployment-vs-requestedExecutionLevel-eq
- Marcado como Resposta Marcos SJ quarta-feira, 10 de fevereiro de 2016 12:44