Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.200.86] |
|
Сообщ.
#1
,
|
|
|
Вопрос - как запустить immediate custom action с правами администратора? custom action, например, берётся из InstallerCA.dll. Про Execute="deferred" Impersonate="no" знаю, но тут deferred...
Добавлено Execute="immediate" Impersonate="no" access denied ... |
Сообщ.
#2
,
|
|
|
И кстати, тут же вопрос - как Execute="rollback" custom action с правами администратора запускать, но думаю способ у них один.
|
Сообщ.
#3
,
|
|
|
Цитата G0ohan @ Вопрос - как запустить immediate custom action с правами администратора? Запустить установку с правами администратора. Цитата G0ohan @ Про Execute="deferred" Impersonate="no" знаю, но тут deferred... deferred работает не с админскими правами, а с SYSTEM. Цитата G0ohan @ как Execute="rollback" custom action с правами администратора запускать rollback - работает в deferred mode и тоже с правами SYSTEM. Ты что такого экзотического хочешь делать? Зачем тебе immediate custom action с админскими правами? |
Сообщ.
#4
,
|
|
|
Цитата Fester @ Ты что такого экзотического хочешь делать? Зачем тебе immediate custom action с админскими правами? Костыль решающий эту проблему Принудительный апдейт файла (Wix) На счёт запустить от админа: манифест к msi прикрутить можно? если нет, то надо бы что бы права у CA (immediate) были повышенные. На счёт rollback спасибо, учту. Кстати, как передать параметры (в пропирте) в deferred CA в Wix, а то что-то <CustomAction Id="rollback_debris" BinaryKey="InstallerCA" DllEntry="rollback_debris" Execute="rollback" Impersonate="no" /> - норм работает а на <CustomAction Id="rollback_debris" BinaryKey="InstallerCA" DllEntry="rollback_debris" Execute="rollback" Impersonate="no" Property="PRNAME"/> компилятор странно ругается: Скрытый текст error CNDL0022 : The CustomAction/@BinaryKey attribute cannot coexist with a previously specified attribute on this element. The CustomAction element may only have one of the following source attributes specified at a time: BinaryKey, Directory, FileKey, Property, or Script. |
Сообщ.
#5
,
|
|
|
Цитата G0ohan @ Костыль решающий эту проблему Принудительный апдейт файла (Wix) И каким образом ты собываешься сделать этот костыль? Уже пробовал MsiSetComponentState function? Цитата G0ohan @ компилятор странно ругается: ну так там же написано в описании ошибки. |
Сообщ.
#6
,
|
|
|
Цитата Fester @ ну так там же написано в описании ошибки. и в правду. Цитата Fester @ Уже пробовал MsiSetComponentState function? Спасибо, теперь попробовал, в начале очень обнадёжило, но оказалось... Короче тут всё печально. Возвращает ERROR_FUNCTION_FAILED и говорит, что Target paths not created. No path exists for entry [INSTALLLOCATION] in Directory table. Причём это апдейт, т.е. как Action: Null; был, так и остался. Добавлено точнее Installed: Absent; Request: Local; Action: Null; Client State: Unknown у компонента при апдейте Добавлено так, с ошибкой разобрался, возникала из-за того, что After="CostFinalize" экшн CAGetComponentState вызывал. Стоило вызвать After="InstallFinalize", MsiSetComponentState стал возвращать 0. Но Action: Null; как был, так и остаётся (я проверяю экшном CAGetComponentState, который вызываю после CAGetComponentState). Мне начинает казаться, что не туда я CAGetComponentState втыкаю, куда надо? Добавлено Цитата G0ohan @ бред написал, надо читать так:так, с ошибкой разобрался, возникала из-за того, что After="CostFinalize" экшн CAGetComponentState вызывал. Стоило вызвать After="InstallFinalize", MsiSetComponentState стал возвращать 0. Но Action: Null; как был, так и остаётся (я проверяю экшном CAGetComponentState, который вызываю после CAGetComponentState). Мне начинает казаться, что не туда я CAGetComponentState втыкаю, куда надо? так, с ошибкой разобрался, возникала из-за того, что After="CostFinalize" экшн CASetComponentState вызывал. Стоило вызвать After="InstallFinalize", MsiSetComponentState стал возвращать 0. Но Action: Null; как был, так и остаётся (я проверяю экшном CAGetComponentState, который вызываю после CASetComponentState, ну и ещё тот факт, что файл не заменяется). Мне начинает казаться, что не туда я CAGetComponentState втыкаю, куда надо? очень надеюсь на помощь, ибо уже иссяк, а этот путь(MsiSetComponentState использовать) вроде наиболее верный, только не могу его обуздать. |