Я использую плагин MozNet от Se7enSoft. Это элемент управления WebBrowser для FireFox 3.6. Он использует XulRunner.SetEnvironmentVariable не меняет переменную PATH
Первое, что мне нужно сделать, это выполнить метод Initialize (...).
var binDirectory = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location);
var xulRuntimeDirectory = Path.Combine(binDirectory, "xul");
Se7enSoft.MozNet.Xpcom.Initialize(xulRuntimeDirectory, null);
Я должен передать ему каталог, в который мы установили XulRunner. Метод Initialize этого плагина внутренне использует следующий DLLImport.
[DllImport("xpcom", CharSet = CharSet.Ansi,
EntryPoint = "NS_CStringContainerFinish",
CallingConvention = CallingConvention.Cdecl)]
internal static extern int Moz_CStringContainerFinish(ACString container);
Метод NS_CStringContainerFinish из xpcom.dll в XULRunner является требуется.
Незадолго до того, как этот метод вызывается в первый раз, плагин Moznet временно изменяет переменную среды PATH.
Environment.SetEnvironmentVariable("path",
Environment.GetEnvironmentVariable("path") + ";" +
binDirectory, EnvironmentVariableTarget.Process);
расположение XulRunner является временно добавляется к переменной PATH среды, чтобы убедиться, что он может решить xpcom.dll (и другие).
Однако он все еще не может его найти. Я получаю следующее исключение.
Unable to load DLL 'xpcom': Cannot find method.
(Exception from HRESULT: 0x8007007F)
at Se7enSoft.MozNet.Native.MozNativeMethods.Moz_CStringContainerInit(
ACString container)
at Se7enSoft.MozNet.Xpcom.XpCom_Init()
at Se7enSoft.MozNet.Xpcom.Initialize(String mozPath, String profPath)
Эта проблема возникает только на 3 ПК (Windows 2000 & XP). Прекрасно работает для сотен других.
Я могу воспроизвести проблему, если я отлаживаю и перехожу к методу Environment.SetEnvironmentVariable (...).
Есть ли проблемы с SetEnvironmentVariable, которые могут помешать изменению переменной среды PATH?
Вы используете перемещаемые профили? –
Может быть. Обычно нет, но раньше у нас были люди с некорректными (роуминг-профилями). Проверка в нем. –
ОК. Пользователи, сообщившие о проблеме, не имеют перемещаемых профилей. –