ОБНОВЛЕНИЕ: GCJ мертв. Это было , официально удалил из проекта GCC в 2016. Даже перед этим, от этого практически отказались в течение семи лет, и в любом случае это никогда не не было достаточно завершено для служения в качестве жизнеспособной альтернативной реализации Java.
Идут, находят другой Java компилятором AOT.
GCJ: Компилятор GNU для Java может скомпилировать исходный код Java в собственный машинный код, включая исполняемые файлы Windows.
, Хотя не все в Java поддерживается под GCJ, особенно компоненты графического интерфейса пользователя (см. , Какой API Java поддерживается? Насколько завершенный поддержка? вопрос от FAQ). Я не использовал GCJ очень, но от ограниченного тестирования я сделал с консольными приложениями, это кажется прекрасным.
Одна оборотная сторона использования GCJ для создания автономного исполняемого файла - то, что размер получающегося EXE может быть довольно большим. Одно время я скомпилировал тривиальное консольное приложение в GCJ и результате, было исполняемым файлом приблизительно 1 МБ. (Могут быть пути вокруг этого, что я не знаю. Другая опция была бы исполняемыми программами сжатия.)
С точки зрения установщиков с открытым исходным кодом, Система Установки Nullsoft Scriptable является scriptable установщиком. Если Вам любопытно, существует , пользователь внес примеры о том, как обнаружить присутствие JRE и установить его автоматически, если необходимый JRE не установлен. (Только для сообщения я не использовал NSIS прежде.)
для получения дополнительной информации об использовании NSIS для установки JAVA-приложений, смотрите на мой ответ для вопроса" , Что лучший способ состоит в том, чтобы распределить JAVA-приложения? "
Существует API планировщика задач , который можно использовать для доступа к информации о задачах. (Это com-библиотека, но вы можете вызывать ее из C # с помощью пинвок)
Существует статья о codeproject , которая предоставляет оболочку .net для API.
кстати, IRT мое принятое решение, вот код оболочки CodeProject (см. http://www.codeproject.com/KB/cs/tsnewlib.aspx ) необходим чтобы убедиться, что запланированная задача существует
, я использую это в тесте интеграции, поэтому Assert - это NUnit ..
public static void VerifyTask(string server, string scheduledTaskToFind)
{
ScheduledTasks st = new ScheduledTasks(server);
string[] taskNames = st.GetTaskNames();
List<string> jobs = new List<string>(taskNames);
Assert.IsTrue(jobs.Contains(scheduledTaskToFind), "unable to find " + scheduledTaskToFind);
st.Dispose();
}
, чтобы проверить, включена ли она, вы можете сделать следующее:
Task task = st.OpenTask(scheduledTaskToFind);
Assert.IsTrue(task.Status != TaskStatus.Disabled);