powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Делать инсталляторы - работа программиста?
25 сообщений из 64, страница 2 из 3
Делать инсталляторы - работа программиста?
    #38222776
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Такую фигню я уже давно не собираю. Думаете, я бы из-за такой фигни шум поднимал? Мне всякие извращения подсовывают - службы с кастом экшенами , чужие инсталляторы с забытыми исходниками и хитровывернутыми алгоритмами установки, где в пакете три и больше программ , зачастую на разных языках, и по два разных ран-тайма устанавливаются. Ещё и чужие - создатель уволился или умер, а ты нам перепакуй в новый пакет его поделки.Развернуть службу, используя custom action - это же чудо какое-то. А три экзешника в пакет запихать - это вообще... Даже слов не найти, как описать такую ситуацию. Нонсенс!

О чём вообще топик?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38222777
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я думал просто, что это перевод и есть оригинал на английском.Переведите аббревиатуру RSDN, потренируйте свой английский.
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223444
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда скажите, пожалуйста, как поменять последовательность действий при инсталляции? Мне нужно:

1) создать папку;
2) запустить кастом экшен, который создат в созданной ранее папке нужные файлы;
3) заменить часть файлов, созданных на этапе 2, другими файлами - т. е. сначала удалить их, а потом создать новые (комбинация элементов RemoveFile и File).

Проблема в том, что всегда сначала удаляются папки и файлы, а потом создаются. Т. е. заменить-то я смогу, но только ПЕРЕД тем, как создам папку. В результате настоящая последовательность действий такая:

1) удаляются файлы, обозначенные в RemoveFile - поскольку их ещё нет, то ничего не делается;
2) создаётся папка по пункту 1 выше;
3) запускается кастом экшен по п. 2 выше.

В результате те файлы, которые должны быть удалены, не удаляются. Вот существенная часть кода моего инсталлятора:

Код: xml
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.
61.
62.
63.
64.
65.
66.
67.
68.
<?xml version="1.0" encoding="UTF-8"?>
<?define ProductVersion="1.0.0.0" ?>
<?define UpgradeCode="..." ?>
<?define Manufacturer="..." ?>
<?define ProductName="..." ?>
<?define SourcePath="..." ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product>
    <Package/>
    <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="ManufacturerDirectory" Name="$(var.Manufacturer)">
          <Directory Id="ProductDirectory" Name="$(var.ProductName)">
          </Directory>
        </Directory>
      </Directory>
    </Directory>

    <ComponentGroup Id="MainComponentGroup">
      <!--Несмотря на то, что компонент AdditionalFiles и так создаст директорию ProductDirectory, 
	  мне нужно создать её предварительно, чтобы было
	куда устанавливать программы через установщик Wise. 
	Это делается потому, что установщик Wise я запускаю перед развёртыванием файлов и, следовательно,
	перед созданием директории ProductDirectory, в которую эти файлы помещаются.-->
      <Component
        Id="InstallationDirectory" Guid="..."
        SharedDllRefCount="no" KeyPath="no" NeverOverwrite="no" Permanent="no" Transitive="no"
        Win64="no" Location="either"
        Directory="ManufacturerDirectory">
        <CreateFolder Directory="ProductDirectory" />
      </Component>
      <Component
        Id="AdditionalFiles"
        Directory="ProductDirectory"
        Guid="...">
        <!--Далее делаю замену файлов. Именно таким способом, а не через механизм апдейтов или версионностей. 
		И так для каждого файла, с которым нужно такое проделать.-->
        <RemoveFile Id="..." Name="..." On="install"/>
        <File Id="..."
              Name="Remove_..."
              Source="$(var.SourcePath)..."
              Vital="yes" KeyPath="yes" DiskId="1"/>
      </Component>
    </ComponentGroup>

    <Binary Id="WiseInstallation" SourceFile="$(var.SourcePath)..." />

    <Feature Id="Complete" Title="..." Level="1">
      <ComponentGroupRef Id="MainComponentGroup" />
    </Feature>

    <CustomAction
      Id="LaunchWiseInstallation"
      BinaryKey="WiseInstallation"
      ExeCommand=""
      Return="ignore"
      Execute="deferred"
      Impersonate="no"
      />

    <InstallExecuteSequence>
      <Custom Action="LaunchWiseInstallation" After="CreateFolders" >NOT Installed</Custom>
    </InstallExecuteSequence>

  </Product>
</Wix>
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223485
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, Вам надо удалить ранее установленные файлы и инсталлировать новые? Обновить версию программы что-ли? Зачем тут Custom Action?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223594
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

не мучьте свой и других мозги, используйте батники.
если начнете мучить инсталяторы, на программирование времени уже не будет.
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223786
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320, Вам надо удалить ранее установленные файлы и инсталлировать новые? Обновить версию программы что-ли? Зачем тут Custom Action?
Мне надо запустить чужой инсталлятор. Потом заменить часть файлов, установленных этим чужим инсталлятором, на свои. Всё сделать из своего инсталлятора.

Знаю, что плохо. Но надо. Исходники чужого инсталлятора потеряны. Лог его инсталляции представляет из себя огромный список чего и куда ставилось, плюс там ещё рантаймы устанавливаются, которые, по-моему, в логе не входят. Времени мало, поэтому проще запустить этот дурацкий чужой инсталлятор и заменить часть файлов, им установленных.

Штука в том, что мой инсталлятор не знает, куда будет делать установку этот чужой. Поэтому я пишу инструкцию, где говорю, что этот чужой инсталлятор должен ставить в такую-то папку. Эту папку создаст мой инсталлятор. Поэтому мой инсталлятор будет знать, куда чужой положил свои файлы, и сможет заменить файлы чужого на свои.
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223790
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С0ВЕСТЬuser7320,

не мучьте свой и других мозги, используйте батники.
если начнете мучить инсталяторы, на программирование времени уже не будет.
Я наконец-то начал разбираться в Виндовс Инстоллере и в Виксе, хотя бы немного. Какой резон мне бросать всё и лезть в новую, тёмную для меня, комнату?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223817
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, ты будешь докладывать в форум о каждом своём новом шаге в IT ипостаси?

Ожидаю, что завтра будет тема: "Как я устал парсить txt файлы, почему бы этим не заняться специально обученным сотрудникам - парсоменеджерам?"
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223875
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperuser7320, ты будешь докладывать в форум о каждом своём новом шаге в IT ипостаси?

Ожидаю, что завтра будет тема: "Как я устал парсить txt файлы, почему бы этим не заняться специально обученным сотрудникам - парсоменеджерам?"
Я бы хотел, чтобы мне помогли с моим инсталлятором.



Я тут создал вопрос на StackOverflow - не мог бы кто-нибудь помочь, что-нибудь посоветовать?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223880
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320С0ВЕСТЬuser7320,

не мучьте свой и других мозги, используйте батники.
если начнете мучить инсталяторы, на программирование времени уже не будет.
Я наконец-то начал разбираться в Виндовс Инстоллере и в Виксе, хотя бы немного. Какой резон мне бросать всё и лезть в новую, тёмную для меня, комнату?
Я Вас умоляю, изучение инструкций батника del + copy уходит не более 10-20 секунд
Код: c#
1.
2.
del /?
copy /?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223885
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, ответь на банальный опрос . Знаешь ответ?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38223900
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38224035
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperuser7320, ответь на банальный опрос . Знаешь ответ?
Это нарушит исходную последовательность. Кроме того, мне нужно создавать папки два раза - один раз, когда создаю пустую папку для Вайз-инсталлятора, а другой - когда в своём инсталляторе файлы дислоцирую. А там, как я понял, можно поменять последовательность действий как сущностей, а не конкретных действий. Т. е. если я раз поставлю создание папок до удаления файлов, то уже потом не смогу повторить создание папок после удаления файлов. Т. е. мне надо будет создать всю иерархию папок заранее. Так?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38224036
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

Custom до InstallFiles сделать попробуйте
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38224038
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю должно выглядеть примерно так:

Код: xml
1.
2.
3.
<InstallExecuteSequence>
    <Custom Action="DoSomething" Before="InstallFiles" />
</InstallExecuteSequence>
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38224124
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchЯ так понимаю должно выглядеть примерно так:

Код: xml
1.
2.
3.
<InstallExecuteSequence>
    <Custom Action="DoSomething" Before="InstallFiles" />
</InstallExecuteSequence>


Тогда это будет после RemoveFiles, а этого не должно быть - ремувать сначала нечего, а потом уже нельзя.

Если кто-нибудь в этих инсталляторах разбирается - может, и нельзя сделать, как я хочу? Может, только за счёт кастом экшенов можно? Но тогда фактически кодом нужно писать свой инсталлятор.
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38224125
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperuser7320, ответь на банальный опрос . Знаешь ответ?
Что? Это ссылка на ПТ.
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38226208
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что бы я ни делал, а RemoveFile не удаляет файлы.

Читаю http://wix.sourceforge.net/manual-wix2/wix_xsd_removefile.htm .
Снова читаю http://msdn.microsoft.com/en-us/library/windows/desktop/aa371199(v=vs.85).aspx :
авторThe RemoveFiles action removes files previously installed by the InstallFiles action .
и дальше по тексту в том же духе...

И тут до меня доходит, что эта штука не может удалить файлы, созданные не ей самой! Т. е. если я запускаю Wise-инсталлятор из своей MSI-инсталляции, то мой инсталлятор не знает о файлах, созданных Вайзом, и не может их удалить, даже если я укажу прямую ссылку на файл. Более того, он, похоже, не может даже заменить файлы с совпадающими именами (по факту после проверки файлов оказалось, что время из создания равно времени инсталляции Вайзом, а не времени замены моей установкой. Да и вообще, у меня были действия "удалить", "заменить (через удалить/развернуть)" и "развернуть". Первые два касались файлов, созданных Вайзом непосредственно, а последнее мой MSI-инсталлятор просто копировал из инсталляции в место назначения на машине клиента. Выполнилось только последнее.

Lelouch http://wix.sourceforge.net/manual-wix2/wix_xsd_installexecutesequence.htm
Не оно?
Далее, эта таблица порядка установки. Я уже писал, что у неё минус в том, что раз изменив порядок стандартных дейтсвий, нельзя уже их повторить. Т. е. удалил раз файлы, второй раз уже не удалишь. Всё надо делать только один раз. По крайней мере, я не нашёл нигде способо и описаний, как делать эти действия столько раз, сколько я захочу.


Ответ Роба поверг меня в ступор. Неужели я настолько криво изъясняюсь на английском, что он не нашёл ничего лучше, чем повторить мой кусок инсталляции? Даже не знаю, что ему ответить...


Что я для себя выяснил. Проще, наверное, будет написать свою ДЛЛ или ЕХЕ, которые удалят нужные мне файлы. Получается, что любое нестандартное действие - шаг влево, шаг вправо от типичных задач Windows Installer'а - и надо писать свою экзешку. Не знаю, может, это связано с тем, что эти инсталляторы расчитаны на слишком уж правильные установки. Там, где требуется исправлять косяки чужих установок или вставлять костыли, они уже не работают. Ну, или работают через черезу кастом экшенов, которые так не рекомендуют использовать создатели этих инсталляторов.
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38226237
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторThe RemoveFiles action removes files previously installed by the InstallFiles action.
Короче говоря, RemoveFiles удаляет только файлы в сценарии обновления версии, реустановки и т. п., но главное - что всё должно быть в контексте текущей инсталляции. Windows Installer не может удалить какие-либо другие файлы без кастом экшена. Вообще... Или я ошибаюсь?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38226290
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё ответьте, пожалуйста, на такой вопрос. Если для запуска моего кастом экшена, написанного на Сишарпер в виде ДЛЛ, требуется Дотнет фреймворк, то для запуска ДЛЛ на С++ тоже требуется что-то библиотечное? Или код С++ сразу выполняется на процессоре, без всяких виртуальных машин? Если я манипулирую файлами и папками, то это же не голым С++ делается, а с использованием библиотек? Т. е. мне придётся развёртывать библиотеки или фреймворк всё равно?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38226316
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320авторThe RemoveFiles action removes files previously installed by the InstallFiles action.
Короче говоря, RemoveFiles удаляет только файлы в сценарии обновления версии, реустановки и т. п., но главное - что всё должно быть в контексте текущей инсталляции. Windows Installer не может удалить какие-либо другие файлы без кастом экшена. Вообще... Или я ошибаюсь?Всё верно.
Вы что-то устанавливаете средствами Windows Installer, потом ручками кидаете в Install Directory кучу хлама. Идёте в Programs and Features, анинстоллите вышеуказанное "что-то", а хлам остаётся.
То есть файлы, не связанные с инсталлятором, не отслеживаются.

Пишите кастом экшн.
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38226341
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

ну вот, какой день наблюдаем судорожные метания инстляторопейсателя
а потратил бы 10 сек. батником
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38226439
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С0ВЕСТЬа потратил бы 10 сек. батником
9 секунд. Кто меньше?
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38226446
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperС0ВЕСТЬа потратил бы 10 сек. батником
9 секунд. Кто меньше?
это образно говоря, смотря какие файлы и количество.
тысячу маленьких файликов и за минуту не управишься.
...
Рейтинг: 0 / 0
Делать инсталляторы - работа программиста?
    #38226449
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С0ВЕСТЬuser7320,
наблюдаем судорожные метания инстляторопейсателя

какой слог, какая мощь, сколько трагедии в этих словах ( однозначно плюс)
...
Рейтинг: 0 / 0
25 сообщений из 64, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Делать инсталляторы - работа программиста?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]