我在尝试为旧的VB6应用程序的安装程序中的Windows 10上安装兼容性shim数据库(.sdb文件)时遇到问题。
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内部版本17763.292上运行。我使用了sdbinst.exe的System32和SysWOW64版本,但遇到相同的错误。
编辑:更多详细信息。我正在使用位于1809年ADK中的兼容性管理器来生成新的.sdbs。这与我用于开发人员和目标平台上的Windows版本匹配。当直接调用和通过ProcessStartInfo调用时,旧的.sdbs可以完美地工作。也许这是1809年兼容性管理员中的错误?
我不确定发生了什么。任何建议或替代方案将不胜感激。
答案 0 :(得分:0)
其原因是我没有将.sdb文件标记为VS中的嵌入式资源。因此,当安装程序稍后遍历资源时,找不到文件并抛出该异常错误。