Программа не работает на Win XP, но будет работать на Win7

Поэтому я разработал программу с использованием Visual Studio 2010 для Windows 7. Ради этого программа называется Test.exe

Когда другой пользователь, использующий Win XP, пытается открыть эту программу, она открывает окно Just In Time Debugger и никогда не запускается. Я могу открыть программу на своем ящике Win7 и дополнительных ящиках Win7, и каждый раз, когда программа открывается.

Я не совсем уверен, с чего начать, чтобы понять, почему эта программа не запускается на компьютерах с Win XP.

Какие-либо предложения?

ИЗМЕНИТЬ

Вот ошибка исключения, которую мы получили, но запустили отладчик на компьютере с XP.

Вам необходимо убедиться, что в системе Windows XP установлена ​​соответствующая версия .NET Framework.


person Muhnamana    schedule 31.01.2013    source источник
comment
@Muhnamana Отредактировал мой ответ - похоже, вы используете формат значков, который не поддерживается в XP.   -  person Raymond Chen    schedule 31.01.2013


Ответы (1)


Кроме того, многие типы не будут работать на XP в рамках .NET framework 4. Например, если вы используете файл MD5Cng, вы увидите (в разделе документации "Платформы"), что он поддерживается только в Vista+, но не в XP. Использование этого класса в программе вызовет исключение, если она запущена в XP.

Редактировать:


Судя по трассировке стека, ваша форма (WinApp.Form1) использует значок (.ico), формат которого не поддерживается Windows XP. Например, если вы используете полноцветный значок, это может вызвать исключение в XP. Убедитесь, что это 256-цветный файл значка для правильной работы в XP.

Рассмотрите возможность отладки программы, чтобы понять, почему она дает сбой.

person Reed Copsey    schedule 31.01.2013
comment
Может ли это быть значок, который я использую в форме? Верхний левый угол формы, по заголовку? - person Reed Copsey; 31.01.2013
comment
@ Мухнамана Да. Vista+ поддерживает более привлекательные форматы значков, чем XP. Если вы используете современный значок, это вызовет исключение в XP. - person Muhnamana; 31.01.2013
comment
Престижность @Reed Copsey ... вы попали в самую точку с предложением значка ... Я вернулся к значку по умолчанию, протестировал программу на компьютере с XP, загрузился сразу. - person Reed Copsey; 31.01.2013
comment
Я ценю помощь, которую вы оказали! - person Muhnamana; 31.01.2013
comment
@Muhnamana FYI - включение трассировки стека в ваш вопрос сделало это возможным - обратите внимание на нижнюю часть трассировки стека ... - person Muhnamana; 31.01.2013
comment
System.InvalidOperationException не было обработано. Сообщение=Произошла ошибка при создании формы. Дополнительные сведения см. в разделе Exception.InnerException. Ошибка: Исключение было выброшено целью вызова. Source=WinApp StackTrace: в WinApp.My.MyProject.MyForms.Create_Экземпляр_[T](T Instance) в WinApp.My.MyProject.MyForms.get_Form1() в WinApp.My.MyApplication. OnCreateMainForm() в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() в Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine) в WinApp.My.MyApplication. Main(String[] Args) InnerException: System.Reflection.TargetInvocationException Message=Исключение было создано целью вызова. Source=mscorlib StackTrace: в System.RuntimeMethodHandle._SerializationInvoke (метод IRuntimeMethodInfo, целевой объект, SignatureStruct& declaringTypeSig, информация SerializationInfo, контекст StreamingContext) в System.Runtime.Serialization.ObjectManager.CompleteISerializableObject (объект obj, информация SerializationInfo, контекст StreamingContext) в System. Runtime.Serialization.ObjectManager.FixupSpecialObject (держатель ObjectHolder) в System.Runtime.Serialization.ObjectManager.DoFixups() в System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (обработчик HeaderHandler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) в System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (поток сериализацииStream, обработчик HeaderHandler, логическое значение fCheck, логическое значение isCrossAppDomain, метод IMethodCallMessageCallMessage) в System.R esources.ResourceReader.DeserializeObject(Int32 typeIndex) в System.Resources.ResourceReader._LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode) в System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode) в System.Resources.ResourceReader.LoadObject(Int32 pos , ResourceTypeCode& typeCode) в System.Resources.RuntimeResourceSet.GetObject(строковый ключ, логический ignoreCase, логический isString) в System.Resources.RuntimeResourceSet.GetObject(строковый ключ, логический ignoreCase) в System. Resources.ResourceManager.GetObject(имя строки, язык и региональные параметры CultureInfo, логическое значение wrapUnmanagedMemStream) в System.Resources.ResourceManager.GetObject(имя строки) в WinApp.Form1.InitializeComponent() в WinApp.Form1..ctor() InnerException: System.ComponentModel. Сообщение Win32Exception = Неверный параметр Source=System.Drawing ErrorCode=-2147467259 NativeErrorCode=87 StackTrace: в System.Drawing.Icon.Initialize(ширина Int32, высота Int32) в System.Drawing.Icon..ctor(информация SerializationInfo, StreamingContext контекст) Внутреннее исключение: - person Reed Copsey; 31.01.2013