Загрузка и установка программного приложения на клиентскую машину из размещенного веб-приложения Django

Я работал над скриптами, я добавил exe файл в azure storage Я предоставил URL ссылку на сайте, как только локальный пользователь нажмет на эту ссылку, он должен иметь возможность скачать и установить приложение на своей локальной машине. он работал нормально, когда он был на этапе разработки, потому что я тестировал это на локальном веб-сервере, как только я разместил его, он не работал, он загружал exe файлы на размещенной виртуальной машине. Если у вас есть идеи или предложения, это мне очень поможет,

@login_required(login_url='/')
def runcmd(request):
import os
import subprocess
import getpass
if request.method == 'POST':
    if 'app_url' in request.POST:
        app_dw_link = request.POST.get('app_url')
        app_obj = get_object_or_404(AppStore, id=int(app_dw_link))
        url = app_obj.app_file.url
        usrname = getpass.getuser()
        messages.success(request, usrname)
        folder = 'Temp'
        dir_path = os.path.dirname(os.path.realpath(__file__))
        messages.success(request, dir_path)
        destination = f"C:\\Users\\{usrname}\\AppData\\Local\\{folder}"
        if not os.path.exists(destination):
            os.makedirs(destination)
            destination = f'C:\\Users\\{usrname}\\AppData\\Local\\{folder}\\{app_obj.app_name}.exe' #add switches
            download = urlretrieve(url, destination)
            messages.success(request, download)
            subprocess.Popen([destination, '/Silent'], shell=True, stdout=subprocess.PIPE)
        else:
            destination = f'C:\\Users\\{usrname}\\AppData\\Local\\{folder}\\{app_obj.app_name}.exe' #add switches
            download = urlretrieve(url, destination)
            messages.success(request, download)
            subprocess.Popen([destination, '/Silent'], shell=True, stdout=subprocess.PIPE)
        messages.success(request, 'Download completed')
return redirect("selfservice:it_store")

Как вы, возможно, уже поняли, этот код загружает и запускает программу установки только на машине, на которой этот код фактически запущен (т.е. на сервере). Вы не можете заставить клиента загрузить и установить программное обеспечение из вашего веб-приложения по соображениям безопасности. Лучшее, что вы можете сделать, это перенаправить их на URL загрузки, где размещена ваша программа установки, а затем просто ожидать, что пользователь сам вручную установит программу. Например,

return redirect("https://www.example.com/installer.exe")

Затем их браузер будет перенаправлен на ссылку загрузки и может инициировать загрузку (браузер может запросить разрешение в зависимости от настроек браузера). Затем пользователь должен загрузить и запустить программу установки и выполнить все необходимые шаги по установке. Это максимально возможный контроль над процессом, поскольку сайты могут принудительно устанавливать программное обеспечение на ваш компьютер без вашего ведома или разрешения - это огромная уязвимость безопасности.

Вернуться на верх