Посоветуйте прогу...

Обсуждение любых программ, не имеющих отношения к Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Посоветуйте прогу...

Сообщение A.N.T. »

Вобщем мне нужно сделать такой инсталлятор... Что бы он:
1. Добавлял файлы в заданные директории
2. Добавлял ключи в реестр
3. Выполнял файл после распаковки
4. САМОУНИЧТОЖАЛСЯ!!!

Есть ли такая штука.. Мне это нужно для собственного использования, для автоматизации некоторых процессов.
Сейчас использую Nullsoft Installer и батник

Код: Выделить всё

@echo off
:del_loop
del my_inst.exe
if exist my_inst.exe goto del_loop
del this_file.bat
Хотелось бы другое что-нибудь, с батником как-то не очень красиво :)
Посоветуйте пожалуйста что-нибудь....
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Инсталлятор не знаю, но все перечисленное можно сделать скриптом.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

Неужто нет такой проги, или решения подходящего (хотя скрипт тоже решение, просто хотелось бы, одно целое) :shock:
Может есть тут знатоки NSIS? , просто он поддерживает кучу макросов, всяких скриптов которых в хелпе нет, может он self-delete умеет??? Ведь созданный им Uninstaller убивает сам себя :shock: :shock:
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

A.N.T. писал(а):Ведь созданный им Uninstaller убивает сам себя :shock: :shock:
Это не так! Uninstaller создает копию файла во временной папке, а та уже удаляет исходный файл. Это описано в документации.
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

Uninstaller создает копию файла во временной папке, а та уже удаляет исходный файл.
Понял, это даже в справке написано :)


Люди подскажите в чём может быть проблема..
В NSIS есть макрос GetExeName..


Из справки:
E.1.9 GetExeName
Get installer filename (with valid case for Windows 9X/Me).
Syntax:

${GetExeName} $var
Example:

Section
${GetExeName} $R0
; $R0="C:\ftp\program.exe"
SectionEnd
Как я понял этот макрос получает имя инсталлера :) и привязывает к переменной $R0,
не пойму как этим пользоваться, вроде вроде бы всё правильно сделал, скомпилился инсталлер, в параметрах Унинсталлера написал delete $R0 но он не удаляет ничего, в чём проблема?
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

Windows программы ведь не могут себя удалять. Чаще всего.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

2Моторокер

Ещё как могут :)
http://www.catch22.net/tuts/selfdel.asp , где то видел русский вариант этой статьи...
Lamer
Сообщения: 522
Зарегистрирован: Пн мар 20, 2006 03:55

Сообщение Lamer »

На sources.ru ты его видел,этот русский вариант :)
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

Народ подскажите плз как с помощью батника удалить файл(myprog.exe) в текущей директории -> т.е. где сам батник находится.
ToLamer
Не уподобляйтесь fundukу.Пишите Майкрософт,а не Микрософт.И поменьше кидайте призывов.Laughing
funduk,привет большевикам Wink да ещё и с английским отливом. Smile
В тему подколол :lol:
Lamer
Сообщения: 522
Зарегистрирован: Пн мар 20, 2006 03:55

Сообщение Lamer »

Строчка в батнике

Код: Выделить всё

del myprog.exe /q
где /q отключает перезапрос: "действительно ли Вы хотите удалить".


А это конкретная ссылочка на сурсах http://sources.ru/cpp/faqs/96.htm
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

2Lamer
Строчка в батнике

Код: Выделить всё

del myprog.exe /q
где /q отключает перезапрос: "действительно ли Вы хотите удалить".
Не до такой степени я и ламер, чтоб не знать этого :D

Этот вариант мне не подходит вот почему:
Ставил xPize что то вроде темы для XP - тк вот она пофиксила в реестре параметры командной строки фон - вместо чёрного синий и т.д. и самое главное изменила путь по умолчанию к текущей папке, на C:\WINDOWS, таким образом, если я выполню del *.exe то все экзешники из %windir% удалятся :lol:, я стал жертвой делита:).... Мне нужно, что бы например, создавалась переменная, в которой указывался б путь к текущей директории, ну и потом я выполнил что то вроде del %dir%\myprog.exe

А русскую статейку я видел тут http://deadbeef.narod.ru/work/articles/selfdel.htm
Lamer
Сообщения: 522
Зарегистрирован: Пн мар 20, 2006 03:55

Сообщение Lamer »

По-моему ты слишком мудришь. Любая команда командного интерпретатора сначала пытается производить операции над файлами в директории,из которой была запущена и только если не находит,анализирует системную переменную окружения PATH. Т.е. ничего лишнего она тебе не удалит.Если сомневаешься, попробуй накидать в свою папку м папку Windows файлов типа *.bla и выполни del *.bla.
А зачем тебе вообще понадобилось пользоваться таким шаблоном *.exe? Почему не конкретно myprog.exe? Ну или списком ,если их несколько.
Ну и в конце концов можно просто прописать полный путь.Т.е. не del myprog.exe , a del c:\myfolder\subfolderofmyfolder\myprog.exe
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

Спасибо и на этом...
Со *.exe просто привёл пример... Давно не помню зачем мне это было нужно....
А решение я уже нашел 8)

Код: Выделить всё

del %CD%myprog.exe
Аватара пользователя
StrangeRRor
Сообщения: 214
Зарегистрирован: Сб июл 15, 2006 13:16

Сообщение StrangeRRor »

Предлагаю такое решение:

Код: Выделить всё

@echo off
set path=%~dp0
del %path%*.exe
Если хочется, можно добавить /q.
Переменная %0 в bat-файле соответствует нулевому аргументу командной строки, т.е. имени самого файла, %~d1-разворачивает %1 в букву диска, %~p1-разворачивает %1 в путь. %~dp1-разворачивает %1 в букву диска и путь. Таким образом, сочетание %~dp0 будет раскрыто в полный путь к каталогу, где находится сценарий.
З.Ы. Правда, при этом уничтожается и сам bat-файл.
Аватара пользователя
A.N.T.
Сообщения: 190
Зарегистрирован: Сб июл 01, 2006 08:50

Сообщение A.N.T. »

StrangeRRor

Твой способ не работает если папка, в которой находится батник названа русскими буквами или в имени имеются пробелы или слишком длинное имя....
Ответить