На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ Inno Setup
Пожалуйста, выделяйте текст инсталлятора написанного на Inno Setup тегом [сode=ins] ... [/сode]. Для этого используйте кнопку [code=ins] в форме ответа или выпадающего списка, если нужно вставить код из другой программы.


Обязательно указывать:

  • Программу, используемую для создания инсталлятора.



Если в ходе решения проблемы возникли дополнительные вопросы, по возможности задаем их в той же теме.


Выразить свое отношение к модераторам раздела можно здесь: Profi, Fester
Модераторы: Fester
  
> immediate custom action с правами администратора (Wix) , как организовать?
    Вопрос - как запустить immediate custom action с правами администратора? custom action, например, берётся из InstallerCA.dll. Про Execute="deferred" Impersonate="no" знаю, но тут deferred...

    Добавлено
    Execute="immediate" Impersonate="no" access denied ...
      И кстати, тут же вопрос - как Execute="rollback" custom action с правами администратора запускать, но думаю способ у них один.
        Цитата G0ohan @
        Вопрос - как запустить immediate custom action с правами администратора?

        Запустить установку с правами администратора.

        Цитата G0ohan @
        Про Execute="deferred" Impersonate="no" знаю, но тут deferred...

        deferred работает не с админскими правами, а с SYSTEM.

        Цитата G0ohan @
        как Execute="rollback" custom action с правами администратора запускать

        rollback - работает в deferred mode и тоже с правами SYSTEM.

        Ты что такого экзотического хочешь делать? Зачем тебе immediate custom action с админскими правами?
          Цитата 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.
            Цитата G0ohan @
            Костыль решающий эту проблему Принудительный апдейт файла (Wix)

            И каким образом ты собываешься сделать этот костыль? :)

            Уже пробовал MsiSetComponentState function?


            Цитата G0ohan @
            компилятор странно ругается:

            ну так там же написано в описании ошибки.
              Цитата 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 использовать) вроде наиболее верный, только не могу его обуздать.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0324 ]   [ 15 queries used ]   [ Generated: 28.04.24, 09:11 GMT ]