Сборка C # для 32-битной платформы Windows 7 на 64-битной машине Windows 7 - PullRequest
1 голос
/ 04 ноября 2011

Какой правильный способ создания установщиков установщика для приложения Windows Forms для установки и запуска на 32-разрядной машине Windows 7 с использованием Visual Studio 2010 на 64-разрядной машине Windows 7?

У меня естьтолько что стряхнул пыль с 3-летнего старого приложения Visual Studio 2008, построенного на Windows XP, с использованием SQL Express 2005.

Я обновил его до VS2010, SQL Express 2008 и перестроил на 64-битной Windows 7машина.Он должен работать на 32-битной платформе Windows 7.

Проект установки для базы данных не выполняется (при запуске) при запуске, говоря, что это только для машины x64.(Настройка приложения работает нормально и устанавливается.)

Я прошел через каждый проект решения и настроил его для сборки с использованием x86 (в отличие от любого процессора).Я удалил все предварительные условия.Единственное, что осталось оставить там, это подозрительный проект DB CustomAction (который запускает сценарии db).

Начиная с поиска в Google, мне кажется, что он построен на 64-битной машине с 'Any CPU', то есть он должен создавать установочные файлычто будет работать на 32-битной машине через WOW?и без необходимости вносить все изменения, которые я делал?Я скучаю по чему-то чертовски очевидному?

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Я всегда нахожу разочарование, когда сталкиваюсь с постами с одним и тем же вопросом, который никогда не был опубликован. Поэтому я опубликую то, что обнаружил, если оно, или даже кое-что, будет полезно другим. Я обнаружил, что многие другие разработчики сообщают, что бесцельная программа Windows 7 «перестала работать».

Кстати, я нашел самый простой способ протестировать развертывание приложения, и установщики должны были создать машину Virtual PC с той же конфигурацией, на которой в конечном итоге будет работать платформа. Затем скопируйте этот Virtual PC и выполните тестовый запуск на копии. Таким образом, я могу в любое время просто удалить копию, скопировать из оригинала и быстро начать заново.

Да, как сказал Космин, для свойства TargetPlatform этого решения также необходимо установить значение x86. Как бы то ни было, проблема не была устранена, приложение по-прежнему выдавало сообщение «Перестал работать».

Затем я проверил файл ERRORLOG журналов SQL (c: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLExpress \ MSSQL \ Log) и сообщил, что приложение пытается войти в систему с использованием аутентификации в смешанном режиме, в то время как SQL был установлен для Проверка подлинности Windows. Теперь я ЗНАЮ, что выбрал смешанный режим при установке SQL Express, так как мое приложение использует учетную запись службы sql, для которой мой установщик БД создает учетную запись. Так что как-то что-то изменилось (не знаете что?). Чтобы установить смешанный режим через SQL Server Management Studio, просто щелкните правой кнопкой мыши экземпляр, выберите «Безопасность» и измените проверку подлинности сервера. Без Management Studio вам нужно отредактировать реестр HKEY_LOCAL_MACHINE / Software / Microsoft / Microsoft SQL Server // MSSQLServer и отредактировать ключ LoginMode = 2 для Mixed. Еще раз, не устранив проблему, приложение все равно выдало сообщение «перестал работать».

Затем, случайно, я наткнулся на некоторые сообщения об этом сообщении, которое может быть вызвано во время запуска загрузкой 32-битных приложений в Windows 7. Я поместил MessageBoxes и Try / Catchs в первые строки, которые могли, и они так и не были отображены, и не было обнаружено ошибок.

Следующим, что я попробовал, было запустить DependencyWalker поверх моего exe. Сообщается, что отсутствуют 2 х 32-битные файлы: IEShims.dll и GPSVC.dll. Есть сообщения от других разработчиков, сталкивающихся с этим, и конечный результат был, я нашел их в C: \ Windows \ winsxs (GPSVC.dll назывался x86_microsoft-windows-g..licy-base.resources_31bf3856ad364e35_6.1.7600.16385_en-us_c10af1bed239c523_gpsvc.dll .mui_0c160ac2). Я поместил их в C: \ Windows \ System32, перекомпилировал мое приложение, развернул его на моем тестовом компьютере, и он наконец запустился!

Все еще не понимаю, почему, просто поместив их в каталог System32 на моем компьютере разработчика, приложение запустилось на тестовом компьютере? Но в любом случае, это решило проблему, и надеюсь, что это поможет другим.

1 голос
/ 04 ноября 2011

Попробуйте это:

  • выберите ваш проект установки в Solution Explorer
  • перейти на панель свойств
  • убедитесь, что для TargetPlatform установлено значение x86
...