Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как задать путь? / 12 сообщений из 12, страница 1 из 1
18.05.2020, 04:38
    #39958736
GVOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
Простая задача. Есть папка Test1 в ней лежит sfx архив test.exe там один файл test.txt. Если два раза щелкнуть мышкой то test.txt извлекается в папке Test1, что и требуется (таким образом планируется разворачивать новую версию программы).

Но вот если это сделать из приложения с помощью

WshShell.Run (Application.CurrentProject.Path & "\Test1\Test.exe")

то test.txt почему-то оказывается в папке Мои документы.
Не могу понять в чем проблема.
...
Рейтинг: 0 / 0
18.05.2020, 05:56
    #39958749
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
GVOV
Не могу понять в чем проблема.
патамушта нужно настроить текущий каталог или задать каким другим способом. Мне в данном случае проще задать текущий каталог.
как-то так...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim strArhivPath As String, varOldDir as variant

strArhivPath = Application.CurrentProject.Path & "\Test1\Test.exe"
varOldDir = CurrDir
    If Not IsEmpty(varOldDir) Then
        If Not Left(varOldDir, 1) = Left(strArhivPath, 1) Then ChDrive Left(strArhivPath, 1)
    Else
        ChDrive Left(strArhivPath, 1)
    End If
ChDir Left$(strArhivPath, InStrRev(strArhivPath, "\"))
VBA.Shell strArhivPath
    If Not IsEmpty(varOldDir) Then
        ChDrive Left(varOldDir, 1)
        ChDir varOldDir
    End If


А чего sfx-архив? Почему не простой zip? С ним попроще так-то, ИМХО
...
Рейтинг: 0 / 0
18.05.2020, 06:00
    #39958750
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
Может и попроще можно, не пробовал...
Панург
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim strArhivPath As String, varOldDir as variant

strArhivPath = Application.CurrentProject.Path & "\Test1\Test.exe"
varOldDir = CurrDir
ChDrive Left(strArhivPath, 1)
ChDir Left$(strArhivPath, InStrRev(strArhivPath, "\"))
VBA.Shell strArhivPath
    If Not IsEmpty(varOldDir) Then
        ChDrive Left(varOldDir, 1)
        ChDir varOldDir
    End If

...
Рейтинг: 0 / 0
18.05.2020, 08:39
    #39958771
ldfanate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
лучше наверное так
Код: vbnet
1.
2.
3.
4.
5.
on error resume next
ChDrive Left(strArhivPath, 1)
on error resume next
ChDir Left$(strArhivPath, InStrRev(strArhivPath, "\"))
on error goto 0


А то если на \\сетевой шаре базу откроют, повалятся ошибки.
...
Рейтинг: 0 / 0
18.05.2020, 09:46
    #39958786
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
ldfanate
А то если на \\сетевой шаре базу откроют, повалятся ошибки.
показан принцип (минимально достаточный), а не готовый продукт. И "как лучше" пусть ТС разбирается.
ldfanate
лучше наверное так

А насчёт нафффтыкать обработчиков и игнорировать ошибки - не самый лучший способ.
...
Рейтинг: 0 / 0
18.05.2020, 10:29
    #39958800
Как задать путь?
GVOV
WshShell.Run (Application.CurrentProject.Path & "\Test1\Test.exe")

то test.txt почему-то оказывается в папке Мои документы.


Справка RARSFX-модули WinRAR с графическим интерфейсом (GUI) поддерживают следующие параметры в командной строке.

Параметр Описание
-d<путь> Указать целевую папку для извлекаемых файлов.
-p<пароль> Указать пароль для зашифрованного SFX-архива.
-s, -s1, -s2 Режим подавления выводимых на экран сообщений. Ключ -s это сокращённая форма ключа -s1. Ключи -s и -s1 скрывают окно SFX и индикатор хода извлечения. Ключ -s1 также скрывает окно с лицензией. Ключ -s2 скрывает только начальное окно, но индикатор операции отображается
Попробуйте так:
Код: vbnet
1.
2.
Fd = Application.CurrentProject.Path & "\Test1\"
WshShell.Run Fd & "Test.exe -d" & Fd
...
Рейтинг: 0 / 0
18.05.2020, 11:31
    #39958826
GVOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
Панург
показан принцип (минимально достаточный), а не готовый продукт. И "как лучше" пусть ТС разбирается.


Спасибо. Теперь я понял что надо задать ChDrive и ChDir и все будут нормально.
Почему sfx?
В работе приложения для работы с архивами я использую pkzip25.exe но когда стал цеплять его для работы с обновлением программы оказалось что там есть файлы с названиями символами которые не правильно распознает pkzip25.exe. Как вариант выхода sfx. В sfx архиве находится само приложение которое каждый раз при запуску автоизвлекается в текущую папку и запускается - удобно так как запускаем с обычного ярлыка. А если что зайти в папку приложения и тыкнуть exe-шник
Может есть и другие лучшие способы но так сложились и пока работает. Хотя есть и проблема, бывает что антивирусы не очень любят sfx.
...
Рейтинг: 0 / 0
18.05.2020, 11:34
    #39958830
GVOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
Кривцов Анатолий

Попробуйте так:
Код: vbnet
1.
2.
Fd = Application.CurrentProject.Path & "\Test1\"
WshShell.Run Fd & "Test.exe -d" & Fd



Действительно, как то не обратил внимание что поддерживаются параметры в командной строке.
В данном случае это будет самое правильное решение.
...
Рейтинг: 0 / 0
18.05.2020, 12:11
    #39958852
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
GVOV
В работе приложения для работы с архивами я использую pkzip25.exe
не проще ли работать средствами системы с архивами ZIP? И никаких сторонних программ ненужно.
...
Рейтинг: 0 / 0
18.05.2020, 12:15
    #39958856
ldfanate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
GVOV
то test.txt извлекается в папке Test1, что и требуется (таким образом планируется разворачивать новую версию программы).


А откат обратно, к прошлой версии программы (если в итоге новая версия корявая оказалась, и всё сломалось) как у вас реализован?
...
Рейтинг: 0 / 0
18.05.2020, 12:48
    #39958872
GVOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
ldfanate
GVOV
то test.txt извлекается в папке Test1, что и требуется (таким образом планируется разворачивать новую версию программы).


А откат обратно, к прошлой версии программы (если в итоге новая версия корявая оказалась, и всё сломалось) как у вас реализован?


А с zip виндовс умет таботать с ХР версии? До вин 10 комманды работы одинаковые?
...
Рейтинг: 0 / 0
18.05.2020, 12:50
    #39958873
GVOV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как задать путь?
ldfanate

А откат обратно, к прошлой версии программы (если в итоге новая версия корявая оказалась, и всё сломалось) как у вас реализован?


Значить новое обновление все восстановит. Откатов не предусмотрено потому что часто вместе с исполняемым файлом меняются и сопутствующие файлы шаблонов ворд и ексель с которыми он работает.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как задать путь? / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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