Это проблема, с которой я боролся в течение нескольких дней, и теперь я в своем уме.Я создаю MSI с помощью Wise Installation Studio, но могу поспорить, что он может быть воспроизведен с помощью любой программы MSI.Я создал тестовый образец для тех, кто хочет воспроизвести файлы MSI, DLL или WSI, которые я разместил.
- Создайте новое мудрое решение, сохраните его как «test.wsi» и создайте «test.msi '
- Ничего не делать с этим файлом, кроме добавления двух пользовательских действий после действия MigrateFeaturesState в' UI Sequence '
- Первым пользовательским действием является «Вызов DLL из установки», которыйне передает никаких параметров и игнорирует код возврата
- Вторым настраиваемым действием является «Вызов пользовательской библиотеки DLL из установки», которое не передает параметров и игнорирует код возврата
- Оба действия ссылаются на одну и ту же DLLи та же функция, helloworld.dll и функция HelloWorld (), которая просто отображает окно с сообщением «HelloWorld»
Ожидаемый результат: два запроса hello world и затем обычный экран пользовательского интерфейса для запуска процесса установки.
Вот мои текущие настройки: Окно разработки: - Wise Installation Studio 7.4.0.214 - Win7 x64, работающая с выключенным UAC,
Окно проверки: - Windows XP SP3 - Установщик Windows v4.5.6001.22159 - .Net Framework v4.0
Вот мои тесты:
- Не администратор с именем пользователя ascii - Результаты ожидаемые для обоих 'ALLUSERS = "" "и ALLUSERS = "1"
- Администратор с Unicode-символами в имени 'あ く ぇ え' - Результаты ожидаемые как для ALLUSERS = "" ", так и для ALLUSERS =" 1 "
- Non-admin с символами юникода в имени '发 涩' - отображается только первое приглашение, а для второго отображается ошибка: «Ошибка в настраиваемом действии. Библиотека C: \ Documents and Settings \ ?? [LongAlphaNumericString] .TMP \WiseCustomCalla.dll недействителен или не найден. "Это происходит как для 'ALLUSERS = ""', так и для ALLUSERS = "1"
- Войдите в систему с другим администратором и установите пользователя в # 3 как admin, войдите в систему с пользователем в # 3 снова, и мы получим ожидаемые результаты.
Я пытался возиться с форсированием коротких путей и передачей альтернативного пути к папке с данными пользователей, но ничего не работает.Кто-нибудь знает, почему это происходит и как это исправить?Я включил здесь все файлы, которые я использовал для этого тестирования, включая снимок экрана с сообщением об ошибке, msi и msi.xml, файл wsi, helloworld.dll (тест с rundll32 helloworld.dll, HellowWorld) ипротоколы для каждого приведенного выше теста.
http://dl.dropbox.com/u/1797288/error.zip
Что необходимо изменить в файле MSI / WSI, чтобы № 3 работал правильно для действия «Вызов пользовательской библиотеки DLL из установки»?
Спасибо, Аарон П