Есть программа написанная на JAVA. Jar файл обернут Launch4j и сделан инсталятор Inno Setup. Как можно реализовать проверку на новую версию при запуске программы и автоматическое скачивание и установка новой версии пользователю?
С файлом это самое распространённое.
Ну скачать думаю тоже проблем нет - Код. А вот с запуском его. Можно через exec
команду в джаве - она выполняет команду как из cmd
консоли винды, к примеру. Та программа запускается и ищет старую, и удаляет.
package ua.com.prologistic;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class DownloadFileFromURL {
public static void main(String[] args) {
// будем качать карту сайта моего сайта - в вашем случае замените ссылку на свою
String url = "http://javadevblog.com/sitemap.xml";
try {
// качаем файл с помощью NIO
downloadUsingNIO(url, "/Users/prologistic/sitemapnio.xml");
// качаем файл с помощью Stream
downloadUsingStream(url, "/Users/prologistic/sitemap_stream.xml");
} catch (IOException e) {
e.printStackTrace();
}
}
// качаем файл с помощью Stream
private static void downloadUsingStream(String urlStr, String file) throws IOException{
URL url = new URL(urlStr);
BufferedInputStream bis = new BufferedInputStream(url.openStream());
FileOutputStream fis = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int count=0;
while((count = bis.read(buffer,0,1024)) != -1)
{
fis.write(buffer, 0, count);
}
fis.close();
bis.close();
}
// качаем файл с помощью NIO
private static void downloadUsingNIO(String urlStr, String file) throws IOException {
URL url = new URL(urlStr);
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream(file);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}
Источник
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Стандартный контроллер может ставить на паузу и перематыватьНужно добавить кнопку полноэкранного режима и пару других
Есть класс для работы с параметрами сетевых запросов