Я думаю, что скоро пожалею о том дне, когда решил использовать InstallShield, а не WiX.
У меня был небольшой опыт работы с WiX, и он казался немного сложным в использовании, поэтому, когда пришло время для реального проекта, я решил использовать новый Flexera InstallShield LE для Visual Studio 2010. Сначала это казалось таким простым, что я создал и скомпилировал первый установочный проект без проблем. Ему даже удалось извлечь COM-информацию из какой-то сторонней библиотеки (насколько мне известно, она была скомпилирована с использованием VC 6).
Но когда я добавил еще несколько проектов установки InstallShield (ISL) в то же решение, появились странные проблемы. Если я отредактирую страницу общей информации одного проекта ISL, а затем нажму кнопку «Сохранить все», информация внезапно смешается с частями из других проектов ISL, некоторые поля будут отображаться как UNITITIALIZED STRING, а некоторые поля просто перепутаются. И когда я открываю другие проекты ISL, я вижу, что и там информация перепутана. Единственное решение, по-видимому, состоит в том, чтобы выгрузить все другие проекты ISL при редактировании страницы общей информации.
Проблема номер два: сбои. Мой проект представляет собой смешанное приложение C++/C#. Иногда при редактировании неуправляемого кода C++ Visual Studio просто аварийно завершает работу при выполнении определенных операций (например, комментирование некоторых блоков кода, вырезание, вставка). Я даже установил Visual Studio 2010 SP1, но это не помогло. Сбои полностью прекратились, когда я выгрузил все проекты ISL.
В любом случае, я разочарован, и теперь у меня есть выбор:
оставайтесь с ISL, создайте свой собственный исполняемый файл, который будет установлен и будет запускать regsvr32. Тем не менее, мне придется жить с сбоями Visual Studio и проблемами со страницей общей информации.
перейти к XML установщика Windows. Но я не уверен, на каком он сейчас этапе, не будет ли у меня таких же проблем? Может ли WiX зарегистрировать COM для меня (также может ли он зарегистрировать 32-битные библиотеки DLL в 64-битных системах, используя regsvr32 из папки syswow64)? Стабильна ли она с Visual Studio 2010?
Я буду очень признателен за ваши предложения о том, что мне делать — оставаться с ISL или перейти на WiX, особенно от тех, кто является опытным пользователем WiX в Visual Studio 2010.