Wix: копировать файлы в Custom Action в каталог программ (Windows 7) - PullRequest
2 голосов
/ 07 июля 2010

Я создал управляемый CustomAction для копирования 2 файлов, не включенных в * .MSI, в каталог установки.

Хотя это работает в Windows XP, в Windows 7 происходит сбой. Хотя в журнале говорится, чтофайлы копируются в нужное место, C:\Program Files\MyApp\, они фактически копируются в C:\Users\MyUser\AppData\Local\VirtualStore\Program Files (x86)\MyApp\.Я предполагаю, что это связано с правами доступа для изменения папки программы.

Вот как я называю настраиваемое действие в WiX:

<CustomAction 
    Id='InstallSource'
    BinaryKey='SrcInstActionDll'
    DllEntry='InstallSourceFiles'
    Execute='deferred'
    Impersonate='no'/>
<CustomAction
    Id="InstallSource.SetProperty"
    Return="check"
    Property="InstallSource"
    Value='Files=[SourceDir]$(var.SourceZipName),[SourceDir]$(var.SymbolsZipName);TargetDir=[ParentFolder]'
    Execute='immediate'/>

Сам CustomAction просто вызываетFile.Copy().Другие файлы, скопированные установщиком, прекрасно работают в Windows 7. Только те файлы, которые были скопированы с помощью CustomAction, имеют описанную проблему.

Ответы [ 2 ]

2 голосов
/ 07 июля 2010

Действительно, такое поведение вызвано перенаправлением файловой системы, которое запускается, когда 32-разрядное приложение (в 64-разрядной системе Windows), работающее от имени обычного пользователя, пытается выполнить запись в некоторую привилегированную папку.

Для меня похоже, что ваше пользовательское действие не выполняется повышено . Поскольку определение настраиваемого действия выглядит правильным, остается вопрос, где вы запускаете это настраиваемое действие.

Поскольку вы упоминаете журнал, я предполагаю, что вы запускаете msiexec и проверяете журналы. Убедитесь, что ваше пользовательское действие выполняется после строки, которая выглядит следующим образом:

MSI (s) (BC:70) [13:34:10:669]: MSI_LUA: Elevation required to install product, will prompt for credentials
MSI (s) (BC:70) [13:34:59:528]: MSI_LUA: Credential Request return = 0x0
MSI (s) (BC:70) [13:34:59:528]: MSI_LUA: Elevated credential consent provided. Install will run elevated

Некоторое время назад у меня была похожая проблема с пользовательскими действиями, и это сообщение в блоге помогло мне понять, как это исправить. Это другой пост , который, я думаю, может помочь

Надеюсь, это поможет

0 голосов
/ 12 июля 2010

Как вы сказали, я думаю, что ваше Custom Action требует повышения.Поскольку ваш ЦС является проектом .Net, его довольно просто настроить для поддержки повышения прав.

Пожалуйста, проверьте следующую ссылку, там есть хорошее объяснение того, как обрабатывать UAC в проекте .Net.1003 *

включение вашего приложения для uac-on-vista

Надеюсь, это поможет.

...