Como tornar meu arquivo .exe confiável por outros computadores

0

Eu criei um programa python simples para fazer upload de arquivos para um servidor para as pessoas da minha empresa usarem (por enquanto, é uma solução de curto prazo). O usuário executa o arquivo e pede que ele escolha arquivos, que são enviados para um servidor. Meu código está aqui:

import os
from tkinter import filedialog, Tk, Label, Button
import paramiko
import urllib.parse
import os
from pathlib import Path

class MyGUI:
    def __init__(self, master):
        self.master = master
        master.title("Server Uploader")
        master.resizable(height=False, width=False)
        master.configure(bg="white")

        self.label = Label(master, text="There was a problem connecting to the server. Please try again later or contact me.", fg="black", bg="white")
        self.label.config(font=("Courier", 12))
        self.label.pack()

class SuccessfulUpload:
    def __init__(self, master):
        self.master = master
        master.title("Successful Upload")
        master.resizable(height=False,width=False)

        self.label = Label(master, text="Upload successful. You can now close this window.")
        self.label.config(font=("Courier, 12"))
        self.label.pack()

#Connect to server using SFTP
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
    ssh_client.connect(hostname='hostname',port=portno,username='username',password='password')
except paramiko.ssh_exception.AuthenticationException as e:
    root = Tk()
    my_gui = MyGUI(root)
    root.mainloop()
    raise SystemExit

#Ask for user to choose files to upload
root = Tk()
root.withdraw()
files = filedialog.askopenfilenames(title="Choose Files to Upload to the Server", filetypes=(("All Files","*.*"),("PDF Files","*.pdf"), ("Word Files","*.doc*")))
print (root.tk.splitlist(files))

s = ssh_client.open_sftp()
if files == "":
    raise SystemExit

#Define local and remote path for file
for file in files:
    localpath = file
    parts = Path(file).parts
    endpath = parts[-1]
    print(endpath)
    remotepath="/Path/" + endpath
    print(remotepath)
    s.put(localpath,remotepath)

root = Tk()
fin = SuccessfulUpload(root)
root.mainloop()

s.close()
root.destroy()

complete = input("Upload Successful. Press any key to exit.")

Eu converti o arquivo .py em um arquivo .exe usando o pyinstaller. Eu então enviei para outro computador. Primeiro, o Windows tentou impedir o programa de baixar (compreensível), depois de permitir o download, o Windows tenta impedir que o programa seja executado - pouco irritante, mas OK. Ainda assim, depois de permitir o programa duas vezes no Windows, o antivírus (AVG) ainda impede que o programa seja executado. Para fazê-lo funcionar, tive que ir diretamente para o antivírus e abrir uma exceção para o meu programa.

Não consigo enviar o programa enquanto você precisa fazer uma exceção manualmente dentro do antivírus. Existe alguma maneira de tornar o seu arquivo mais confiável para outros computadores para baixar e executar (sem anti-vírus parar completamente o programa seja executado).

    
por Conor Hughes 30.10.2017 / 15:36

1 resposta

0

para assinatura digital, você pode experimentá-lo. (referência de link ) signtool obter do MS SDK ou Visual C ++ para Python ( link )

Primeira vez

Makecert -r -pe -ss SeuNome SeuNome.cer

certmgr.exe -add SeuNome.cer -s -r raiz do localMachine

Depois

signtool sign / s SeuNome YourApp.exe

    
por 20.02.2018 / 10:17