установка программы
От: niXman Ниоткуда https://github.com/niXman
Дата: 30.05.17 13:06
Оценка:
привет!

нужно написать кастомный инсталлятор. (пожалуйста, не спрашивайте, почему)

вопросов у меня несколько:
1. программы обязательно должны устанавливаться в "Program Files"/"Program Files (x86)" ?
если нет — то куда, и в каких случаях, и почему?

2. чтоб создать ярлык(который будет отображаться в меню "Пуск"), я должен в директории c:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs создать директорию(кстати, это настоящая директория, или виртуальная? как ее создать?), в которой создать нужные ярлыки при помощи такого кода?


спасибо!
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Отредактировано 30.05.2017 13:07 niXman . Предыдущая версия . Еще …
Отредактировано 30.05.2017 13:07 niXman . Предыдущая версия .
Re: установка программы
От: rumit7  
Дата: 30.05.17 13:14
Оценка:
Здравствуйте, niXman, Вы писали:

Inno Setup

UPD. Пример

UPD2. Certification requirements for Windows Desktop Apps см. "10. Apps must install to the correct folders by default" ответ на вопрос в какую папку ставить

UPD3. ИМХО чем изобретать велосипед, лучше потратить день и написать нормальный инсталлер, используя InnoSetup или еще что, которое умеет все делать сам
Отредактировано 30.05.2017 13:29 rumit7 . Предыдущая версия . Еще …
Отредактировано 30.05.2017 13:24 rumit7 . Предыдущая версия .
Отредактировано 30.05.2017 13:18 rumit7 . Предыдущая версия .
Re[2]: установка программы
От: niXman Ниоткуда https://github.com/niXman
Дата: 30.05.17 13:28
Оценка:
Здравствуйте, rumit7, Вы писали:

вы, наверное, меня не поняли, хоть я и написал "нужно написать кастомный инсталлятор. (пожалуйста, не спрашивайте, почему)"

наверное, слово "кастомный" не отображает возложенный на него смысл.

нужно создать свой инсталлятор, снуля, для некоторой проги.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: установка программы
От: rumit7  
Дата: 30.05.17 13:33
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, rumit7, Вы писали:


X>вы, наверное, меня не поняли, хоть я и написал "нужно написать кастомный инсталлятор. (пожалуйста, не спрашивайте, почему)"


X>наверное, слово "кастомный" не отображает возложенный на него смысл.


X>нужно создать свой инсталлятор, снуля, для некоторой проги.


так InnoSetup для этого и создан — вы описываете сценарий для Вашего инсталлера, какие фалый куда скопировать, какие иконки где создать на выходе получаете готовый инсталлер который делает все как нужно.

вот так он например можно попросить его создать desktop icon:

[Icons]
Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\{#MyAppIcoName}"; Tasks: desktopicon
Отредактировано 30.05.2017 13:35 rumit7 . Предыдущая версия .
Re[2]: установка программы
От: niXman Ниоткуда https://github.com/niXman
Дата: 30.05.17 13:34
Оценка:
Здравствуйте, rumit7, Вы писали:

R>UPD2. Certification requirements for Windows Desktop Apps см. "10. Apps must install to the correct folders by default" ответ на вопрос в какую папку ставить

сейчас чуть-чуть понятней...

а как получить путь к "Program Files"/"Program Files (x86)" директориям? эти пути наверное могут меняться? наверное есть какая-то WINAPI?

R>UPD3. ИМХО чем изобретать велосипед, лучше потратить день и написать нормальный инсталлер, используя InnoSetup или еще что, которое умеет все делать сам

с удовольствием так бы и сделал, а еще лучше — вообще не занимался бы этим. но вынужден.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[4]: установка программы
От: niXman Ниоткуда https://github.com/niXman
Дата: 30.05.17 13:36
Оценка:
Здравствуйте, rumit7, Вы писали:

R>так InnoSetup для этого и создан

вряд ли оно умеет наш протокол для общения с сервером апдейтов и для получения/применения бинарных diff`ов.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: установка программы
От: Alexander G Украина  
Дата: 30.05.17 13:39
Оценка: +3
Здравствуйте, niXman, Вы писали:

X>1. программы обязательно должны устанавливаться в "Program Files"/"Program Files (x86)" ?

X>если нет — то куда, и в каких случаях, и почему?

Некоторые приложения, например Chrome, ставятся в %APPDATA%, чтобы их мог ставить не-администратор.
Но обычно установка программы требует администратора.

Вообще программы обычно спрашивают куда, хотя часто эту опцию не выставляют до нажатия какого-нить "advanced". Program Files — просто значение по умолчанию.

X>2. чтоб создать ярлык(который будет отображаться в меню "Пуск"), я должен в директории c:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs создать директорию(кстати, это настоящая директория, или виртуальная? как ее создать?), в которой создать нужные ярлыки при помощи такого кода?


Да, просто создавать директорию и ярлыки.
Ну или даже просто один ярлык без директории, сейчас так моднее.

Директории узнаются через SHGetKnownFolderPath или SHGetFolderPath.
Русский военный корабль идёт ко дну!
Отредактировано 30.05.2017 16:03 Alexander G . Предыдущая версия .
Re[3]: установка программы
От: rumit7  
Дата: 30.05.17 13:43
Оценка:
Здравствуйте, niXman, Вы писали:

X>а как получить путь к "Program Files"/"Program Files (x86)" директориям? эти пути наверное могут меняться? наверное есть какая-то WINAPI?


можно через SHGetSpecialFolderPath и CSIDL_PROGRAM_FILESX86/CSIDL_PROGRAM_FILES
Re[5]: установка программы
От: rumit7  
Дата: 30.05.17 13:44
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, rumit7, Вы писали:


R>>так InnoSetup для этого и создан

X>вряд ли оно умеет наш протокол для общения с сервером апдейтов и для получения/применения бинарных diff`ов.

т.е. нужно при инсталле проверять имеются updates или нет? и если имеются обновления скачиваем и ставим уже их? так?

UPD. а что с общением с пользователем? как Вы собираетесь спросить у него в какую папку ставить? для всех пользователей устанавливаемся или только для текущего? создавать иконку на рабочем столе или нет? как вы собираетесь показывать прогресс бар? в консоли или ui какой забабахаете?
Отредактировано 30.05.2017 14:07 rumit7 . Предыдущая версия . Еще …
Отредактировано 30.05.2017 13:58 rumit7 . Предыдущая версия .
Re[6]: установка программы
От: niXman Ниоткуда https://github.com/niXman
Дата: 30.05.17 14:02
Оценка:
Здравствуйте, rumit7, Вы писали:

R>т.е. нужно при инсталле проверять имеются updates или нет?

это уже оффтоп, но: инсталлер онлайновый, который общается с сервером апдейтов, а не с файловым хранилищем.
при установке наличие апдейтов не проверяется, т.к. локальных файлов попросту нет. просто выполняется diff между null(локальным файлом) и реальным файлов. результатом такого diff`а будет полный файл, который присылает сервер апдейтов, и который локально применяется бинарным patch.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[7]: установка программы
От: rumit7  
Дата: 30.05.17 14:10
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, rumit7, Вы писали:


R>>т.е. нужно при инсталле проверять имеются updates или нет?

X>это уже оффтоп, но: инсталлер онлайновый, который общается с сервером апдейтов, а не с файловым хранилищем.
X>при установке наличие апдейтов не проверяется, т.к. локальных файлов попросту нет. просто выполняется diff между null(локальным файлом) и реальным файлов. результатом такого diff`а будет полный файл, который присылает сервер апдейтов, и который локально применяется бинарным patch.

не вижу никаких проблем, чтобы не использовать здесь InnoSetup. Ну хозяин барин, но я как нелюбитель возни с GUI так говорю
Re[6]: установка программы
От: niXman Ниоткуда https://github.com/niXman
Дата: 30.05.17 14:11
Оценка:
Здравствуйте, rumit7, Вы писали:

R>а что с общением с пользователем? как Вы собираетесь спросить у него в какую папку ставить? для всех пользователей устанавливаемся или только для текущего? создавать иконку на рабочем столе или нет? как вы собираетесь показывать прогресс бар? в консоли или ui какой забабахаете?


UI я уже сделал, с использованием Qt5.

R>как Вы собираетесь спросить у него в какую папку ставить?

за этим я сюда и пришел, чтоб понять, стОит ли пользователю предлагать выбор? исходя из ссылки на M$, которую вы привели, правильно устанавливать в "Program Files"/"Program Files (x86)". это, наверное, и будет путем по умолчанию, если юзер не выбрал другой.

R>для всех пользователей устанавливаемся или только для текущего?

ну, если установка происходит в "Program Files"/"Program Files (x86)" — программа будет доступна всем пользователям, нужно только для них создать ярлыки в их директория(насколько я пока понимаю).

R>создавать иконку на рабочем столе или нет?

есть в инсталлере такие чек-боксы(ярлыки в меня Пуск, рабочий стол, quck launch). в зависимости от их состояния должны создаваться ярлыки.
осталось только понять, как создавать их, с помощью того кода, ссылку на который я привел в в первом посте...


а "quck launch" это тоже какая-то директория, в которой нужно просто создать ярлык?
ща погуглю...
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Отредактировано 30.05.2017 14:13 niXman . Предыдущая версия .
Re[7]: установка программы
От: Слава  
Дата: 30.05.17 14:23
Оценка: +2
Здравствуйте, niXman, Вы писали:

R>>для всех пользователей устанавливаемся или только для текущего?

X>ну, если установка происходит в "Program Files"/"Program Files (x86)" — программа будет доступна всем пользователям, нужно только для них создать ярлыки в их директория(насколько я пока понимаю).

Вот у меня например два раздела — C и D, и program files имеется на обоих. Вы б всё же не изобретали велосипед, а воспользовались уже имеющимся windows installer.
Re[7]: установка программы
От: rumit7  
Дата: 30.05.17 14:24
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, rumit7, Вы писали:


R>>а что с общением с пользователем? как Вы собираетесь спросить у него в какую папку ставить? для всех пользователей устанавливаемся или только для текущего? создавать иконку на рабочем столе или нет? как вы собираетесь показывать прогресс бар? в консоли или ui какой забабахаете?


X>UI я уже сделал, с использованием Qt5.


теперь понятно..

там еще другие вопросы есть: если во время установки что-то навернется, роллбэк придется самому писать; что на счет uninstaller его тоже придется отдельно писать. в этом смысле InnoSetup мне понравился, много чего сам разруливает, ну не без помощи прямых рук конечно
Re[8]: установка программы
От: niXman Ниоткуда https://github.com/niXman
Дата: 30.05.17 14:26
Оценка:
Здравствуйте, Слава, Вы писали:

С>Вы б всё же не изобретали велосипед, а воспользовались уже имеющимся windows installer.

"изобретать велосипед" — это пытаться скрестить нашу систему инсталлов/апдейтов с тем, что для этого не предназначено.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[8]: установка программы
От: niXman Ниоткуда https://github.com/niXman
Дата: 30.05.17 14:29
Оценка:
Здравствуйте, rumit7, Вы писали:

R>там еще другие вопросы есть: если во время установки что-то навернется, роллбэк придется самому писать; что на счет uninstaller его тоже придется отдельно писать. в этом смысле InnoSetup мне понравился, много чего сам разруливает, ну не без помощи прямых рук конечно


анинсталлер писать не нужно, просто создается ярлык на инсталлер с именем uninstall, который запускает инсталлер и передает ему аргумент "--uninstall", и все.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[9]: установка программы
От: rumit7  
Дата: 30.05.17 14:32
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, Слава, Вы писали:


С>>Вы б всё же не изобретали велосипед, а воспользовались уже имеющимся windows installer.

X>"изобретать велосипед" — это пытаться скрестить нашу систему инсталлов/апдейтов с тем, что для этого не предназначено.

ваша система — это просто отдельный процесс способный скачивать нужные файлы в указанную директорию.. для всего остального есть MasterC готовые решения.
Re[9]: установка программы
От: rumit7  
Дата: 30.05.17 14:34
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, rumit7, Вы писали:


R>>там еще другие вопросы есть: если во время установки что-то навернется, роллбэк придется самому писать; что на счет uninstaller его тоже придется отдельно писать. в этом смысле InnoSetup мне понравился, много чего сам разруливает, ну не без помощи прямых рук конечно


X>анинсталлер писать не нужно, просто создается ярлык на инсталлер с именем uninstall, который запускает инсталлер и передает ему аргумент "--uninstall", и все.


это ничего не меняет, суть та же код разрастается там где мог быть простым..
что на счет роллбэка?

UPD. например в InnoSetup для uninstall в большинстве случаев ничего писать не нужно, он сам создает его автоматом.. в редких случаях (например что-бы удалить свой драйвер), нужно написать отдельную функцию.

UPD2. в вашем случае нужно запомнить куда устанавливались файлы, создавались ли иконки и т.д. и удалить их вручную написав код..
Отредактировано 30.05.2017 14:46 rumit7 . Предыдущая версия . Еще …
Отредактировано 30.05.2017 14:39 rumit7 . Предыдущая версия .
Отредактировано 30.05.2017 14:37 rumit7 . Предыдущая версия .
Re[5]: установка программы
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 31.05.17 09:33
Оценка:
Здравствуйте, niXman, Вы писали:


R>>так InnoSetup для этого и создан

X>вряд ли оно умеет наш протокол для общения с сервером апдейтов и для получения/применения бинарных diff`ов.


В чем проблема сделать DLL-ку и подсунуть её как часть процесса установки в тот же InnoSetup.

Могу сделать инсталлятор. С вас — DLL-ка с описанием
Маньяк Робокряк колесит по городу
Re[7]: установка программы
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 31.05.17 09:35
Оценка: +1
Здравствуйте, niXman, Вы писали:

R>>создавать иконку на рабочем столе или нет?

X>есть в инсталлере такие чек-боксы(ярлыки в меня Пуск, рабочий стол, quck launch). в зависимости от их состояния должны создаваться ярлыки.
X>осталось только понять, как создавать их, с помощью того кода, ссылку на который я привел в в первом посте...

В результате у тебя получится кривенький мало где нормально работающий инсталлятор


X>а "quck launch" это тоже какая-то директория, в которой нужно просто создать ярлык?

X>ща погуглю...

Всё это меняется от версии к версии винды
Маньяк Робокряк колесит по городу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.