none
Auto destruir aplicação RRS feed

  • 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

    terça-feira, 9 de fevereiro de 2016 02:30

Respostas

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

    terça-feira, 9 de fevereiro de 2016 02:47
  • 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

    terça-feira, 9 de fevereiro de 2016 03:23
  • Boa noite,

    Estou tentando executar o comando da seguinte forma:

    Process.Start("cmd.exe", "/C choice /C Y /N /D Y /T 3 & Del " + Application.ExecutablePath);

    Porem, abre o cmd e nada acontece e fecha.

    O que poderia ser?

    Obrigado

    terça-feira, 9 de fevereiro de 2016 03:55
  • 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/

    terça-feira, 9 de fevereiro de 2016 10:23
  • 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.kobashicomputing.com/how-to-force-a-windows-application-to-be-run-with-administrator-priviledges

    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
    terça-feira, 9 de fevereiro de 2016 14:46