Visual Studio 2005 предоставя инструменти за лесна направа на инсталации под формата на Setup/Deployment project. Сравнително лесно се правят инсталации, които са straight-forward и не изискват някаква сложна логика. Поддържат се и предварителни изисквания (prerequisites), custom actions както и ред други благини.
За съжаление няма българска локализация и още по-лошо - няма никаква локализация, която да поддържа кирилица. Проблемите, които произтичат от това са няколко:
- създадения инсталатор изглежда непрофесионално; опитваш се да предложиш продукт, а се инсталира на латиница. Тук имам предвид стандартните съобщения като ОК, Cancel надписите на бутоните
- design time се предоставя известен набор възможности за въвеждане на разни текстове като ProductName и др. За съжаление, ако се въведат на кирилица излиза warning, а run-time на същото място излизат ??????.
Има и други такива, за които всеки, на когото му се е налагало да използва може да сети и сам.
Какво може да се направи?
Накратко начина, по-който може да се кирилизира инсталатора не е лесен и изисква известни усилия, но в крайна сметка се постига желания резултат.
Като начало се инсталира Windows SDK Components for Windows Installer Developers от http://msdn2.microsoft.com/en-us/library/aa370834.aspx
От тук използваме инструмента Orca, който най-общо може да редактира ресурсните таблици на MSI файл, както и няколко скрипта в подпапка Samples\Scripts
- Генерираме setup project-a от Visual Studio 2005. Обикновено той се състои от setup.exe и някакъв msi файл
- С помощта на Orca отваряме msi файла. Тук в зависимост от сложността на инсталацията може да се наложи да се експортират доста таблици от меню Tables->Export tables, но за по-прости setup проекти нужните таблици са:
Property.idt - обща информация за проекта като ProductName и други такива
Control.idt - текстовете по контролите и диалозите
RadioBut.idt - текстове на радио бутоните
- Превеждаме тези таблици както намерим за добре
- Кодовата таблица на msi setup файла, трябва да се промени на 1251, за да работи правилно с кирилица
WiLangId.vbs.msi codepage 1251
- Обратно импортиране на преведените таблици обратно в msi файла
WiImport.vbs.msi <път до idt файловете> Property.idt
WiImport.vbs.msi <път до idt файловете> Control.idt
WiImport.vbs.msi <път до idt файловете> RadioBut.idt
.....
Вече е всичко готово и MSI файлът е локализиран успешно!
Както може да се види обаче, процесът е доста дълъг и неприятен. Да се следва тази процедура при всеки build е крайно досадно и скучно.
Може да се ускори значитено като се поставят някои команди в Post-Build Property-to на самия проект, а именно първо се добавят следните файлове към проекта
- WiLangId.vbs, WiImport.vbs (те се намират в Windows SDK Components for Windows Installer Developers пакета в подпапка Samples\Scripts)
- всички idt файлове, които са нужни за проекта
- в Post-Build Property се добавят тези редове:
cscript "$(ProjectDir)WiLangId.vbs" "$(BuiltOuputPath)" codepage 1251
cscript "$(ProjectDir)WiImport.vbs" "$(BuiltOuputPath)" "$(ProjectDir)" Property.idt
cscript "$(ProjectDir)WiImport.vbs" "$(BuiltOuputPath)" "$(ProjectDir)" Control.idt
cscript "$(ProjectDir)WiImport.vbs" "$(BuiltOuputPath)" "$(ProjectDir)" RadioBut.idt
И това е всичко.
Вече след всеки build автоматично проектът ще се кирилизира, ресурсните таблици ще се импортират обратно в него и се получава един красив български setup project!
Както обикновено се случва - всеки метод има някои недостатъци. Най-общо това са:
- ако се промени нещо по интерфейса (добави се нов стандартен диалог към проекта например) е нужно ресурсните таблици да се прегенерират и да се merge-нат към вече преведените
- при промяна design time на properties те не се отразяват, защото... се замазват от преведените ресурсни таблици. Решение за това е промените да се правят и в Proprty.idt
Като заключение ми се струва, че Microsoft не са обмислили setup projects (за момента, може би в VS 2008 ще е различно) и освен проблемите с локализацията има и доста недъзи по самия процес на направа на проекта....
Е имат и доста добри неща - най-вече добрата интеграция с Visual Studio :))
За съжаление няма българска локализация и още по-лошо - няма никаква локализация, която да поддържа кирилица. Проблемите, които произтичат от това са няколко:- създадения инсталатор изглежда непрофесионално; опитваш се да предложиш продукт, а се инсталира на латиница. Тук имам предвид стандартните съобщения като ОК, Cancel надписите на бутоните
- design time се предоставя известен набор възможности за въвеждане на разни текстове като ProductName и др. За съжаление, ако се въведат на кирилица излиза warning, а run-time на същото място излизат ??????.
Има и други такива, за които всеки, на когото му се е налагало да използва може да сети и сам.
Какво може да се направи?
Накратко начина, по-който може да се кирилизира инсталатора не е лесен и изисква известни усилия, но в крайна сметка се постига желания резултат.
Като начало се инсталира Windows SDK Components for Windows Installer Developers от http://msdn2.microsoft.com/en-us/library/aa370834.aspx
От тук използваме инструмента Orca, който най-общо може да редактира ресурсните таблици на MSI файл, както и няколко скрипта в подпапка Samples\Scripts
- Генерираме setup project-a от Visual Studio 2005. Обикновено той се състои от setup.exe и някакъв msi файл
- С помощта на Orca отваряме msi файла. Тук в зависимост от сложността на инсталацията може да се наложи да се експортират доста таблици от меню Tables->Export tables, но за по-прости setup проекти нужните таблици са:
Property.idt - обща информация за проекта като ProductName и други такива
Control.idt - текстовете по контролите и диалозите
RadioBut.idt - текстове на радио бутоните
- Превеждаме тези таблици както намерим за добре
- Кодовата таблица на msi setup файла, трябва да се промени на 1251, за да работи правилно с кирилица
WiLangId.vbs
- Обратно импортиране на преведените таблици обратно в msi файла
WiImport.vbs
WiImport.vbs
WiImport.vbs
.....
Вече е всичко готово и MSI файлът е локализиран успешно!
Както може да се види обаче, процесът е доста дълъг и неприятен. Да се следва тази процедура при всеки build е крайно досадно и скучно.
Може да се ускори значитено като се поставят някои команди в Post-Build Property-to на самия проект, а именно първо се добавят следните файлове към проекта
- WiLangId.vbs, WiImport.vbs (те се намират в Windows SDK Components for Windows Installer Developers пакета в подпапка Samples\Scripts)
- всички idt файлове, които са нужни за проекта
- в Post-Build Property се добавят тези редове:
cscript "$(ProjectDir)WiLangId.vbs" "$(BuiltOuputPath)" codepage 1251
cscript "$(ProjectDir)WiImport.vbs" "$(BuiltOuputPath)" "$(ProjectDir)" Property.idt
cscript "$(ProjectDir)WiImport.vbs" "$(BuiltOuputPath)" "$(ProjectDir)" Control.idt
cscript "$(ProjectDir)WiImport.vbs" "$(BuiltOuputPath)" "$(ProjectDir)" RadioBut.idt
И това е всичко.
Вече след всеки build автоматично проектът ще се кирилизира, ресурсните таблици ще се импортират обратно в него и се получава един красив български setup project!
Както обикновено се случва - всеки метод има някои недостатъци. Най-общо това са:
- ако се промени нещо по интерфейса (добави се нов стандартен диалог към проекта например) е нужно ресурсните таблици да се прегенерират и да се merge-нат към вече преведените
- при промяна design time на properties те не се отразяват, защото... се замазват от преведените ресурсни таблици. Решение за това е промените да се правят и в Proprty.idt
Като заключение ми се струва, че Microsoft не са обмислили setup projects (за момента, може би в VS 2008 ще е различно) и освен проблемите с локализацията има и доста недъзи по самия процес на направа на проекта....
Е имат и доста добри неща - най-вече добрата интеграция с Visual Studio :))
Няма коментари:
Публикуване на коментар