Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 19.01.2020
Сообщений: 6

Программа создающая exe файл

19.01.2020, 15:42. Показов 2238. Ответов 4

Студворк — интернет-сервис помощи студентам
Как можно осуществить создание ехе-программой других ехе-программы?
К примеру, я запускаю программу-конструктор в которой я могу настроить то что мне нужно и после всего этого нажать кнопку и программа сохранит то что я сделал в отдельный ехе-файл. (По коду это возможно будет выглядеть как настройка одной формы, а потом компиляция этой одной формы.)
Возможно как-то можно использовать компилятор фреймворка, но как?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.01.2020, 15:42
Ответы с готовыми решениями:

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

Возможно ли сделать exe файл который будет и программой (exe) и музыкой (mp3) на c#?
Здрастуйте мне нужна программа на c# которую можно будет замаскировать под mp3(или другой формат музыки). Так, чтобы программа работала и...

Упаковать exe и dll в один exe файл
Добрый день! Для защиты использую IlProtector. На выходе получается exe и 2 dll. Я хочу упаковать эти три файла в один exe. Что для...

4
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
19.01.2020, 19:12
Цитата Сообщение от miwa987 Посмотреть сообщение
Как можно осуществить создание ехе-программой других ехе-программы?
смотрите класс CSharpCodeProvider:

https://docs.microsoft.com/en-... mework-4.8
1
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
19.01.2020, 19:48
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

miwa987,
Класс для компиляции
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
class BuilProject
    {
        /// <summary>Класс для компиляции файла.exe
        /// 
        /// </summary>
        public class BuildProject
        {
            //класс для параметров компиляции
            CompilerParameters compilerParams = new CompilerParameters();
            CSharpCodeProvider provider;
            string fileName;
            Process process = new Process();
            Dictionary<string, string> providerOptions = new Dictionary<string, string>
                {
                    {"CompilerVersion", "v4.0"}
                };
            public BuildProject()
            {
                provider = new CSharpCodeProvider(providerOptions);
            }
 
            /// <summary>Создает файл.exe.
            /// 
            /// </summary>
            /// <param name="source">Код для сборки файла</param>
            /// <param name="nameProject">Полный путь к выходному файлу, включая Название.exe без расширение.</param>
            /// <returns>Возвращает список ошибок во время компиляции</returns>
            public CompilerResults CreateExe(string source, string nameProject)
            {
                fileName = $"{nameProject}.exe";
                compilerParams.OutputAssembly = fileName;
                compilerParams.GenerateExecutable = true;
                compilerParams.CompilerOptions = "/target:winexe";
                compilerParams.GenerateInMemory = true;
                var results = provider.CompileAssemblyFromSource(compilerParams, source);
                return results;
            }
 
            /// <summary>Запускает файл после успешной компиляции
            /// 
            /// </summary>
            public void RunProject()
            {
                process.StartInfo.FileName = fileName;
                process.Start();
            }
 
            /// <summary>Добавляет ссылку на сборку
            /// 
            /// </summary>
            /// <param name="reference">Название ссылки без расширения (.dll)</param>
            public void AddReference(params string[] reference)
            {
                for (int index = 0; index < reference.Length; index++)
                {
                    compilerParams.ReferencedAssemblies.Add($"{reference[index]}.Dll");
                }
            }
        }
    }

Файл с исходным кодом формы.
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Drawing;
public class MyForm : Form
{
private IContainer components = null;
private System.Windows.Forms.Form EntryPoint;
public MyForm(string[] args)
{
EntryPoint = this;
EntryPoint.Width = 656;
EntryPoint.Height = 440;
EntryPoint.Text = "MyDesignerHost";
}
 
protected override void Dispose(bool disposing)
{
   if (disposing && this.components != null)
   {
      this.components.Dispose();
   }
   base.Dispose(disposing);
}
public static void ENTRYPOINT ()
{
   MyForm.Main(new string [] { "" });
}
[STAThread]
public static void Main(string[] args)
{
   Application.EnableVisualStyles();
  Application.Run(new MyForm());
}
}

Как пользоваться
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        private void Button1_Click(object sender, EventArgs e)
        {
            //Класс для компиляции файла
            BuildProject project = new BuildProject();
 
            // Настройки компиляции 
            project.AddReference("System", "System.Core", "System.Windows.Forms", "System.Drawing");
 
            //Получаем результат после компиляции
            CompilerResults results = project.CreateExe(File.ReadAllText("Путь к файлу с расширением"), "Название программы");
 
            //Проверяем условие что нет ошибок в сценарии.
            if (results.Errors.Count == 0)
                //Запускаем проект
                project.RunProject();
            else
            // Выводим информацию об ошибках 
            foreach (CompilerError err in results.Errors)
            {
                //RichTextBox для вывода ошибок
                log.AppendText($"Ошибка: { err.ErrorText} Номер строки: {err.Line}" + Environment.NewLine);
            }
 
        }
2
0 / 0 / 0
Регистрация: 19.01.2020
Сообщений: 6
19.01.2020, 20:12  [ТС]
Большое спасибо, я не совсем шарю во всём этом, но думаю разберусь, спасибо
0
0 / 0 / 0
Регистрация: 12.04.2020
Сообщений: 9
13.04.2020, 11:16
( удалено смс, не увидел класс)
Миниатюры
Программа создающая exe файл  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2020, 11:16
Помогаю со студенческими работами здесь

Программа, создающая exe-файлы
Приветствую Дельфийстов и программистов. Недавно мне пришла идея написать что-то вроде программы интерпретатора. Т.е. пользователь пишет...

программа, создающая файл , состоящий из N знач. типа integer, прочесть файл, вывести нечетные элементы
Составить программу, которая создаёт файл , состоящий из N значений типа integer. Прочесть файл и вывести только нечётные элементы.

Программа создающая текстовый файл
Составить программу на Паскале, которая создает текстовый файл, содержащий имена, расширения и даты последнего изменения всех файлов...

Программа создающая мираж на изображении!!!
Добрый вечер !!!! Нужна Ваша помощь очень срочно!!! Я написал программу которая создает на изображении мираж! в ней есть два способа его...

прога создающая файл
Составьте программу, которая создает файл, состоящий из значений типа Integer. Прочитайте файл и выведите только чётные элементы. .....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru