Ошибка при установке совместимости shim базы данных в Windows 10 - PullRequest
1 голос
/ 13 апреля 2019

У меня есть проблема при попытке установить базу данных совместимости (файл .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?

Я не уверен, что происходит.Будем весьма благодарны за любые предложения или альтернативы.

1 Ответ

0 голосов
/ 09 мая 2019

Причиной этого было то, что я не помечал файл .sdb как внедренный ресурс в VS. Поэтому, когда установщик позже перебрал ресурсы, он не смог найти файл и выдал эту причудливую ошибку.

...