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

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

21.07.2016, 05:25. Показов 759. Ответов 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
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,902
Записей в блоге: 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
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,902
Записей в блоге: 12
21.07.2016, 12:20
Где кавычки? Эти кавычки - это синтаксис С++, ты должен заключать строковые литералы в кавычки. Попробуй вывести содержимое строки kuda через ShowMessage, и посмотри, остались ли в самой строке эти кавычки...
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,401
Записей в блоге: 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
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,902
Записей в блоге: 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
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,902
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru