Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577

Некорректное обновление программы на клиентской рабочей станции

21.07.2016, 05:25. Показов 747. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята очень нужна Ваша помощь!
Разрабатываю программу обновления ПО.

На компьютере где я ее запускаю у пользователя отсутствуют права админа, поэтому я запускаю ее от привилегированной УЗ.
"Загвостка" в том, что так она всё прорабатывает.

Код:
.h
C++
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
27
28
29
30
31
32
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TMemo *newver;
    TMemo *locver;
    TMemo *Progress;
    TTimer *Timer1;
    TLabel *Label1;
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall Timer1Timer(TObject *Sender);
    void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
//копирование 
int MoveFiles( String slSourceDir, String slTargetDir, bool toCopy = true )
{
    SHFILEOPSTRUCT sh;
    sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_FILESONLY;
    sh.wFunc = toCopy ? FO_COPY : FO_MOVE;
    sh.pFrom = slSourceDir.c_str();
    sh.pTo = slTargetDir.c_str();
    sh.hNameMappings = NULL;
    sh.lpszProgressTitle = NULL;
    return SHFileOperation ( &sh );
}
#endif
.срр
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if(DirectoryExists("\\\\Programs\\Catalog"))
{
    //копирование папки "Catalog" с заменой файлов (функцию "MoveFiles" смотри в H-файле)
    String chto = "\\\\Programs\\Catalog",
       kuda = "C:\\Program Files\\Client";
    if(!MoveFiles(chto, kuda)) //пока не скопируется файл обновления не запускаем
    {
        //запуск файла "install.BAT" распаковка доп.файлов
        SHELLEXECUTEINFO ShExecInfo = {0};
        ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
        ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
        ShExecInfo.hwnd = NULL;
        ShExecInfo.lpVerb = NULL;
        ShExecInfo.lpFile = L"C:\\ProgramFiles\\Client\\Catalog\\Bin\\install.bat";
        ShExecInfo.lpParameters = L"";//тихая установка
        ShExecInfo.lpDirectory = NULL;
        ShExecInfo.nShow = SW_SHOW;
        ShExecInfo.hInstApp = NULL;
        ShellExecuteEx(&ShExecInfo);
        WaitForSingleObject(ShExecInfo.hProcess, INFINITE);
        Progress->Lines->Add("ПО успешно обновлено...");
    }
}
НО если я запускаю ее удаленно, то он она запустится повисит-повисит и закроется
Код на запуск обновления через cmd.exe:
C:\psexec.exe \\name_comp -u домен\УЗ -p Пароль C:\программа обновления

Антивирус, брандмауэр, UAC отключены!!!

Скажите, что не так???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2016, 05:25
Ответы с готовыми решениями:

не получается реализовать автоматическое обновление клиентской части программы
может кто нибудь создавал обновление свойх проектов, через FTP или с помошью других компонентов? если можно примеры

Настройка клиентской станции на ubuntu
Всем доброго времени суток. Пишу свою первую тему. К сути, в университете, на занятиях по учебной практике необходимо настроить клиент...

Сборка рабочей станции
Здравствуйте, решил я собрать пк для работы с Solid и 3d max, бюджет 45-50т.р., прошу оценить и по возможности указать что не так и как...

15
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.07.2016, 11:06
Цитата Сообщение от Within_t Посмотреть сообщение
что не так?

Цитата Сообщение от Within_t Посмотреть сообщение
kuda = "C:\\Program Files\\Client";
-
Цитата Сообщение от Within_t Посмотреть сообщение
ShExecInfo.lpFile = L"C:\\ProgramFiles\\Client\\Catalog
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
21.07.2016, 11:48  [ТС]
Ну во - первых это куда копируются файлы
Цитата Сообщение от nick42 Посмотреть сообщение
Сообщение от Within_t
kuda = "C:\\Program Files\\Client";
А во - вторых это каталог в котором находится bat-файл, который запускается после того как все скопируется
Цитата Сообщение от nick42 Посмотреть сообщение
Сообщение от Within_t
ShExecInfo.lpFile = L"C:\\ProgramFiles\\Client\\Catalog
ЕЩЕ ВОПРОСЫ???
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 12
21.07.2016, 12:02
Within_t, в любом случае:
1) при наличии пробелов в пути, сам путь нужно оборачивать в кавычки.
2) pFrom/pTo:
This string must be double-null terminated.
, у тебя я не вижу, где после строки гарантируется наличие двух нулевых символов.
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
21.07.2016, 12:16  [ТС]
volvo, ну у меня и так вроде все в кавычках.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 12
21.07.2016, 12:20
Где кавычки? Эти кавычки - это синтаксис С++, ты должен заключать строковые литералы в кавычки. Попробуй вывести содержимое строки kuda через ShowMessage, и посмотри, остались ли в самой строке эти кавычки...
0
Модератор
 Аватар для D1973
9907 / 6444 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
21.07.2016, 12:33
Цитата Сообщение от nick42 Посмотреть сообщение
ShExecInfo.lpFile = L"C:\\ProgramFiles\\Client\\Catalog
А так и надо, что ProgramFiles - без пробела?
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
21.07.2016, 12:36  [ТС]
Вы имеете ввиду что-то типа?
C++
1
2
    String a = ""\\\\Programs\\Catalog"";
    ShowMessage(a);
На выходе:
"\\Programs\\Catalog"
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 12
21.07.2016, 12:37
Да, только кавычки нужно экранировать. И не надо это делать везде, достаточно - только там, где есть пробелы в пути.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.07.2016, 13:15
Цитата Сообщение от Within_t Посмотреть сообщение
ЕЩЕ ВОПРОСЫ???
Так вопросы - у вас. Только уважаемый D1973 понял правильно, что я имел в виду. Продолжайте спрашивать.
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
21.07.2016, 13:21  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Да, только кавычки нужно экранировать.
Сделал так (на выходе):
chto="\\prog\123"
kuda="C:\Programs File (x86)"
и перед
C++
1
if(!MoveFiles(chto, kuda))
Программа сразу вылетает(
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 12
21.07.2016, 13:24
Продолжай спрашивать. Продолжай. Я задал не один, а ДВА вопроса. Ответ на первый ты соизволил дать, второй - вообще проигнорировал. Продолжай спрашивать...
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
21.07.2016, 13:27  [ТС]
nick42, мне казалось, что я корректно описал проблему, а если Вы про это "ProgramFiles", то наверное описался))), за что извиняюсь.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.07.2016, 13:33
Конечно, я только про опечатку, и не нужно извиняться. То, что это опечатка, следует из того хотя бы, что не работает только при запуске удалённо.
0
 Аватар для Within_t
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
21.07.2016, 13:36  [ТС]
nick42, нет в программе все корректно. если ее запускаешь на компе она отрабатывает а если удаленно через psexec, то она доходит до копирования и вылетает)))
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
21.07.2016, 13:37
П.С. А при операциях с файлами и каталогами по сети появляются свои особые нюансы... - так, украинская буква i в названиях не передается правильно при копировании из удаленного узла, а при копировании на удаленный узел уже все нормально (насколько помню; для ХР).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.07.2016, 13:37
Помогаю со студенческими работами здесь

Имя рабочей станции
Подскажите как можно получить имя рабочей станции?

LVM на рабочей станции
Добрый, есть рабочая станция без LVM планируется установить два жестких новых и перенести папку HOME . Вопрос стоит ли устанавливать LVM,...

Номер рабочей станции
Как узнать номер рабочей станции? Не как не пойму где эта инфа.

Хостинг на домашней рабочей станции
Доброго времени! я не уверен, в ту ли ветку написал сообщение, но все же продолжу, поправьте если не туда. Есть хостинги разные, а как...

Медленный рендер на рабочей станции
Доброго времени суток, ребята! Нужна ваша помощь в плане использования рабочей станции DELL. Характеристики следующие: ОС - Windows 10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru