Страница 1 из 2

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

Добавлено: Чт авг 03, 2006 12:36
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
Хотелось бы другое что-нибудь, с батником как-то не очень красиво :)
Посоветуйте пожалуйста что-нибудь....

Добавлено: Чт авг 03, 2006 13:28
Batya
Инсталлятор не знаю, но все перечисленное можно сделать скриптом.

Добавлено: Сб авг 05, 2006 09:30
A.N.T.
Неужто нет такой проги, или решения подходящего (хотя скрипт тоже решение, просто хотелось бы, одно целое) :shock:
Может есть тут знатоки NSIS? , просто он поддерживает кучу макросов, всяких скриптов которых в хелпе нет, может он self-delete умеет??? Ведь созданный им Uninstaller убивает сам себя :shock: :shock:

Добавлено: Сб авг 05, 2006 16:03
Volniy
A.N.T. писал(а):Ведь созданный им Uninstaller убивает сам себя :shock: :shock:
Это не так! Uninstaller создает копию файла во временной папке, а та уже удаляет исходный файл. Это описано в документации.

Добавлено: Сб авг 05, 2006 17:00
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 но он не удаляет ничего, в чём проблема?

Добавлено: Ср авг 09, 2006 12:41
Моторокер
Windows программы ведь не могут себя удалять. Чаще всего.

Добавлено: Ср авг 09, 2006 15:49
A.N.T.
2Моторокер

Ещё как могут :)
http://www.catch22.net/tuts/selfdel.asp , где то видел русский вариант этой статьи...

Добавлено: Ср авг 09, 2006 18:12
Lamer
На sources.ru ты его видел,этот русский вариант :)

Добавлено: Ср авг 09, 2006 18:56
A.N.T.
Народ подскажите плз как с помощью батника удалить файл(myprog.exe) в текущей директории -> т.е. где сам батник находится.
ToLamer
Не уподобляйтесь fundukу.Пишите Майкрософт,а не Микрософт.И поменьше кидайте призывов.Laughing
funduk,привет большевикам Wink да ещё и с английским отливом. Smile
В тему подколол :lol:

Добавлено: Ср авг 09, 2006 19:13
Lamer
Строчка в батнике

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

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


А это конкретная ссылочка на сурсах http://sources.ru/cpp/faqs/96.htm

Добавлено: Ср авг 09, 2006 20:05
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

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

Добавлено: Ср авг 09, 2006 20:41
A.N.T.
Спасибо и на этом...
Со *.exe просто привёл пример... Давно не помню зачем мне это было нужно....
А решение я уже нашел 8)

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

del %CD%myprog.exe

Добавлено: Ср авг 09, 2006 20:45
StrangeRRor
Предлагаю такое решение:

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

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

Добавлено: Ср авг 09, 2006 20:57
A.N.T.
StrangeRRor

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