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