PDA

Показать полную графическую версию : .: Файлы конфигурации 7z SFX. Помощь и советы :.


Страниц : 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

frankiesimon
01-02-2015, 00:00
Hi, apologize for using English (you can of course answer in Russian! Thanks!)

I'm using the module to generate different .exe archives, but all in the same structure:

MyProgDir (directory)
L-- Run.exe
L-- (other files/folders - about 30 MB of them, in some 280 files)

The name MyProgDir can change in different cases - so it can also be with spaces or with special characters like umlauts (ü). But there's always run.exe inside.

When the SFX is extracted I want the file "run.exe" to be executed. I want to see just run.exe in a window and not any console windows.

At first my configuration file was like this (MyProgDir is replaced by whatever name I need in different cases)

;!@Install@!UTF-8!
RunProgram="\"MyProgDir\\run.exe\""
GUIMode="1"
;!@InstallEnd@!


The problem: run.exe has .dll dependencies that require the current dir to be MyProgDir.

From here, I tried two different things but none of them worked 100%.

1. first way - open cmd.exe and terminate it immediately after starting my app, and setup the current dir to MyProgDir:
RunProgram: "\"cmd.exe\" /c start /b /d MyProgDir run.exe"

The problem here was very weird - run.exe complained that some of its dependencies .dll files were missing. To check, I went to the Temp folder during the message box display - and true, the files were not there, as if the extraction (or copying?) was terminated.

If I changed this to cmd.exe /K the files were all there, but I was stuck with the console window.

2. second way - create a .bat file:
run.bat:

start /w /d "MyProgDir" run.exe
exit


and in the config:
RunProgram="hidcon:\"MyProgDir\\run.bat\""

This works great for running the .exe BUT if MyProgDir has special characters, like if it's called "BüüüFolder" - the start command fails (if I remove the hidcon prefix I see that the ü turned into some mess of characters.

Is there a way to have just one simple RunProgram command to handle this?

spectat0r
01-02-2015, 01:29
Is there a way to have just one simple RunProgram command to handle this? »
1. Может быть лучше не создавать каталог с "üüü"?
2. В текущем каталоге есть какие-то другие файлы, каталоги?
\..
\MyProgDir\
Если нет, то можно упаковать содержимое MyProgDir\ в корневой каталог
7z.exe a "MyProgDir.7z" -r "MyProgDir\*" -mx5
Далее распаковка в:
InstallPath="%TEMP%\\CustomFolder"
RunProgram="run.exe"
...

sas2242
01-02-2015, 03:50
Уважаемый gora, подскажите пожалуйста если это возможно, можно ли как то дополнить эту команду, то есть суть такая, нужно чтобы команда RunProgram="hidcon:cmd /c Ver | Find \"6.2\" >Nul || 2.ехе" проверяла не только для вин8 (6.2) но и для вин8.1 (6.3) ? просто нужно чтобы на всех виндовс программа ставилась и только на 8-8.1 нет... может можно как то дополнить команду? если прописать так RunProgram="hidcon:cmd /c Ver | Find \"6.\" >Nul || 2.ехе" то на 7ке тоже не будет ставится, а мне нужно чтобы она не ставилась только на 8-8.1

spectat0r
01-02-2015, 06:51
del

gora
01-02-2015, 07:28
The problem here was very weird - run.exe complained that some of its dependencies .dll files were missing. To check, I went to the Temp folder during the message box display - and true, the files were not there, as if the extraction (or copying?) was terminated. »
Это может быть проблема с дочерними процессами файла run.exe. То есть, файлы не "не успели" распаковаться, а уже начали удаляться модулем.
Вы не указываете параметр InstallPath и модуль ведет распаковку во временную папку. Затем он запускает run.exe и ждет завершения процесса run.exe, но он (файл run.exe) может породить один или несколько дочерних процессов и при этом закрыть родительский, т.е сам run.exe. Дочерние процессы продолжают свою работу, а модуль получил команду о завершении процесса run.exe и начал все удалять из своей временной папки (такова логика его работы во временной папке). Вот в этот момент Вы и можете получать сообщения об отсутствующих dll.
Здесь можно попробовать использовать префикс waitall, но это не всегда срабатывает.
Можно отказаться от временной папки и указывать конкретный путь распаковки в параметре InstallPath, но тогда после окончания установки убирать "мусор" в виде этой папки придется самостоятельно, а не ждать этого от модуля.This works great for running the .exe BUT if MyProgDir has special characters, like if it's called "BüüüFolder" - the start command fails (if I remove the hidcon prefix I see that the ü turned into some mess of characters. »
А кодировка файла конфигурации UTF-8 или иная? Она обязательно должна быть UTF-8 при работе с национальными алфавитами.start /w /d "MyProgDir" run.exe »Вообще это не правильно, корректнее так:start "" /w /d"%%T\MyProgDir" run.exeВначале пустые кавычки для "Заголовка окна", а %%T для указания полного, а не относительного пути.
[hr]
sas2242, боюсь, что в одну строку все засунуть не получиться, для таких проверок лучше использовать батник.

frankiesimon
28-02-2015, 03:18
Thanks for your messages. After reading your suggestions and going back to my code/setup I realized that I don't really need to place the files in their own subdirectory - and things got a lot easier. Thanks again!

agrei678
20-03-2015, 20:58
подскажите как добавить в файле конфигурации ярлык на рабочий стол!

sov44
20-03-2015, 21:02
agrei678, в справке Shortcut="type,{src_file_path},
{command_line_for_file},
{folder_for_shortcut},{decription},
{shortcut_name},{working_directory},
{icon_file},{icon_index}"

41275jur
18-05-2015, 20:39
Доброго время суток.
Подскажите пожалуйста - можно сделать ярлык программы при помощи Shortcut, чтобы запускался от имени администратора.

http://i72.fastpic.ru/thumb/2015/0518/93/d1d0aedcec28b79b4eb00fa30e488893.jpeg (http://fastpic.ru/view/72/2015/0518/d1d0aedcec28b79b4eb00fa30e488893.jpg.html)

Dean_Winchester
25-06-2015, 18:02
Ребят, подскажите пожалуйста, есть необходимость выполнить такую команду RunProgram="hidcon:Reg Add \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f"
но почему то она не отрабатывает, а если быть точнее, то запись в реестре не появляется, где я чего упустил? Спасибо.

gora
25-06-2015, 18:47
Dean_Winchester, эта ветка недоступна из х86 приложений (модуль то, очевидно, х86 используете). Попробуйте использовать префикс:RunProgram="x64:hidcon:Reg Add \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f"

Dean_Winchester
25-06-2015, 19:13
x64: »

Да, приложение x86 Вот только одна беда, если в 7ке автозапуск работает и из HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\"
то в 8-8.1 приложение запускается при старте только из \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" но добавить туда эту ветку не получается... как и в 7ке она туда не добавляется (хотя в 7ке и так работает) с префиксом пробовал, тоже не выходит...

nibble74
25-06-2015, 20:09
Dean_Winchester,

надо так CMD /C

RunProgram="hidcon:cmd /c Reg Add \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f"

Dean_Winchester
25-06-2015, 20:22
Dean_Winchester,
надо так CMD /C
RunProgram="hidcon:cmd /c Reg Add \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f" »
Спасибо получилось... Премного благодарен...

nibble74
25-06-2015, 20:26
Dean_Winchester

Ж.Д.А.Л.К.Е.Р.
25-06-2015, 20:27
Dean_Winchester, Пере направление в Wow6432Node под управлением Windows х64, для 32-разрядных приложений происходит автоматически. То есть, пишем:

RunProgram="hidcon:Reg Add \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f"
и на х86 ОС получаем запись в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, а в х64 системах HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run. Если использовать х64 модуль, то пере направлений не будет. Для самообразования почитай про wow64 (https://www.google.com.ua/?gws_rd=ssl#q=wow64).

nibble74, CMD тут без надобности, потому что Reg.exe идет отдельным файлом.

nibble74
25-06-2015, 20:38
Ж.Д.А.Л.К.Е.Р., приветствую,

в свою очередь хочу сказать, что зачастую, не срабатывало без cmd /c на некоторых машинах

не знаю с чем это связано... может антивирусы блокировали, поэтому для надёжности передаю команду cmd /c

Dean_Winchester
21-08-2015, 01:04
Здравствуйте, подскажите пожалуйста, сделал себе аддон программы, так вот в вин 8-10 чтобы программа правильно работала и подхватывала все настройки, нужно запускать ее от имени админа, собственно вопрос: можно ли как то с помощью 7zSFX прописать это или сделать, чтобы ярлыку программы присваивался статус запуск от админа? В принципе, программа устанавливается простым копированием и добавлением веток в реестр. Надеюсь на вашу помощь.

Dean_Winchester
21-08-2015, 21:40
:) Спасибо за помощь... :)

sov44
25-08-2015, 13:07
Что-то запутался. :) Нужно, чтобы содержимое папки х64 копировалось в Program Files а не в Program Files (x86)
RunProgram="%%P:hidcon:xcopy /s /e /i /y \"%%T\\%%P\\*\" \"%ProgramFiles%\\%Name%\\\""
модуль 7zsd_LZMA2.sfx 160_2478




© OSzone.net 2001-2012