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

  • Автор темы Автор темы sanya
  • Дата начала Дата начала

sanya

Client
Регистрация
08.09.2015
Сообщения
196
Реакции
51
Баллы
28
Хочу проверять есть ли определенная dll папке, так вот не знаю откуда взять расположение самой платформы. Пример пути "C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\5.35.0.0"
 
Хочу проверять есть ли определенная 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 и разветвляете выполнение по нужному руслу.
 
Хочу проверять есть ли определенная 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
Относительно 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
Итерация по списку тут бессмысленна и занимает время. Лучше сразу обращаться к целевому файлу.
Да, Вы правы. Перепишу вариант по другому.
Код:
Развернуть Свернуть Копировать
string checkFile = @"Newtonsoft.Json.dll";
string path = Path.Combine(Environment.CurrentDirectory, "ExternalAssemblies",checkFile );
bool check = File.Exists(path);
project.SendInfoToLog(check.ToString());
 
  • Спасибо
Реакции: zhekan3
Код:
Развернуть Свернуть Копировать
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
добавьте, пожалуйста, это в переменные окружения
130236

чтобы вот это сразу при открытии проекта(перезагрузке инстанса) прописывалось
 
Последнее редактирование:

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