У меня есть проблема при попытке установить базу данных совместимости (файл .sdb) в Windows 10 внутри моего установщика для старого приложения VB6.То, как это обычно устанавливается в командной строке, будет просто
sdbinst.exe CompatibilityFix.sdb
Если вы сделаете это, SDB установится автоматически.
Однако в моем установщике(приложение на C #), оно называется так:
using (var p = new Process())
{
p.StartInfo = new ProcessStartInfo
{
WorkingDirectory = SetupSupportDir,
FileName = fileName,
Arguments = argument,
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
};
p.OutputDataReceived += ProcessOutputDataReceived;
p.ErrorDataReceived += ProcessErrorDataReceived;
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.WaitForExit();
if (0 != p.ExitCode)
{
TryAction(() => Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "FAILED: {0} - ExitCode: {1}", this.setupStatus, p.ExitCode)));
throw new InvalidOperationException("FAIL: " + this.setupStatus);
}
}
Где fileName
и argument
передаются через параметр.
Проблема в том, что я получаю эту ошибкутолько во время установки.Can't install SDB file because it doesn't support any bitness that this operating system supports.
Я использовал 32-разрядную версию Администратора совместимости, поскольку приложение VB6 является 32-разрядным.Я работаю на 64-битной Windows 10 1809 build 17763.292.Я использовал версии sdbinst.exe для System32 и SysWOW64, и я получаю ту же ошибку.
Редактировать: некоторые подробности.Я использую Администратор совместимости, расположенный в ADK для 1809 для создания новых .sdbs.Это соответствует версии Windows, которую я использую для dev и на целевой платформе.Старые .sdbs отлично работают при непосредственном вызове и при вызове через ProcessStartInfo.Возможно, это ошибка в Администраторе совместимости 1809?
Я не уверен, что происходит.Будем весьма благодарны за любые предложения или альтернативы.