Где хранится путь к платформе зеннопостер

sanya

Client
Регистрация
08.09.2015
Сообщения
184
Благодарностей
49
Баллы
28
Хочу проверять есть ли определенная dll папке, так вот не знаю откуда взять расположение самой платформы. Пример пути "C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.35.0.0"
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 515
Благодарностей
8 703
Баллы
113
Хочу проверять есть ли определенная dll папке, так вот не знаю откуда взять расположение самой платформы. Пример пути "C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.35.0.0"
Вариант не оч. хорош, но все же.
Сейчас подтянутся кодеры и более изящный вариант подскажут. :-)

Можете создать батник из Зеннопостера и в нем подсмотреть переменную пути до раб. папки программы.
Переменная: %ZennoPosterCurrentPath%
Ее можно использовать в бат-файле с командой проверки сущ. файла.

Код:
@echo off
if exist "%ZennoPosterCurrentPath%\TasksRunner.exe" (
    echo File found.
) else (
    echo File not found.
)

47128


Далее с помощью IF экшена, проверяете содержимое переменной res и разветвляете выполнение по нужному руслу.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 414
Баллы
113
Хочу проверять есть ли определенная dll папке, так вот не знаю откуда взять расположение самой платформы. Пример пути "C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.35.0.0"
Код:
return Environment.CurrentDirectory;
Выполнение кода C# Результат: C:\Program Files\ZennoLab\RU\ZennoPoster Pro\5.39.0.0\Progs

Пример перечисления всех DLL
Код:
string path = Path.Combine(Environment.CurrentDirectory, "ExternalAssemblies");
string[] Files = Directory.GetFiles(path, "*.dll", SearchOption.AllDirectories);
foreach(string name in Files) project.SendInfoToLog(name); // Перечислить все dll с ExternalAssemblies  в лог
Пример проверки есть ли конкретная DLL в данной папке:
Код:
string checkFile = @"Newtonsoft.Json.dll";
string path = Path.Combine(Environment.CurrentDirectory, "ExternalAssemblies");
string[] Files = Directory.GetFiles(path, "*.dll", SearchOption.AllDirectories);

bool check = false;
foreach(string name in Files) {
    if(Path.GetFileName(name) == checkFile) check = true;    
}
project.SendInfoToLog(check.ToString());
 
Последнее редактирование:
  • Спасибо
Реакции: Maxxm, sanya и Sergodjan

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 381
Благодарностей
3 304
Баллы
113
Относительно exe:
C#:
if (!File.Exists(Directory.GetParent(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName) + @"\ExternalAssemblies\name.dll"))
    throw new Exception("Не найден");
Относительно ZennoPosterCurrentPath:
C#:
if (!File.Exists(Environment.GetEnvironmentVariable("ZennoPosterCurrentPath") + @"\ExternalAssemblies\name.dll"))
    throw new Exception(Не найден);
Пример проверки есть ли конкретная DLL в данной папке:
Итерация по списку тут бессмысленна и занимает время. Лучше сразу обращаться к целевому файлу.
 
  • Спасибо
Реакции: sanya

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 414
Баллы
113
Итерация по списку тут бессмысленна и занимает время. Лучше сразу обращаться к целевому файлу.
Да, Вы правы. Перепишу вариант по другому.
Код:
string checkFile = @"Newtonsoft.Json.dll";
string path = Path.Combine(Environment.CurrentDirectory, "ExternalAssemblies",checkFile );
bool check = File.Exists(path);
project.SendInfoToLog(check.ToString());
 

sanya

Client
Регистрация
08.09.2015
Сообщения
184
Благодарностей
49
Баллы
28
Код:
return Environment.CurrentDirectory;
Выполнение кода C# Результат: C:\Program Files\ZennoLab\RU\ZennoPoster Pro\5.39.0.0\Progs

Пример перечисления всех DLL
Код:
string path = Path.Combine(Environment.CurrentDirectory, "ExternalAssemblies");
string[] Files = Directory.GetFiles(path, "*.dll", SearchOption.AllDirectories);
foreach(string name in Files) project.SendInfoToLog(name); // Перечислить все dll с ExternalAssemblies  в лог
Пример проверки есть ли конкретная DLL в данной папке:
Код:
string checkFile = @"Newtonsoft.Json.dll";
string path = Path.Combine(Environment.CurrentDirectory, "ExternalAssemblies");
string[] Files = Directory.GetFiles(path, "*.dll", SearchOption.AllDirectories);

bool check = false;
foreach(string name in Files) {
    if(Path.GetFileName(name) == checkFile) check = true;   
}
project.SendInfoToLog(check.ToString());
То что доктор прописал, спасибо всем за отклик
 
  • Спасибо
Реакции: blinkO_o

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)