Корпус типа данных InstallScript

Итог

Я унаследовал большой установщик InstallShield InstallScript, и, работая с его исходными файлами InstallScript (*.rul), я заметил, что регистр типов данных переменных и параметров различается — для того, что кажется одним и тем же типом данных. Например, я вижу переменные и параметры типа number и NUMBER, string и STRING и так далее.

Изменение между прописными и строчными буквами в моих экспериментах казалось не имело значения; проект установщика компилируется в любом случае; но я не уверен, может ли быть что-то еще в этой истории.

Имеет ли значение регистр для типа данных InstallScript? Если да, то когда и какое это имеет значение?

Дополнительный контекст

Исходя из .NET, C# и C++/CLI, я понимаю, что long и Int64 сопоставимы в C#, тогда как long и Int32 сопоставимы в C++/CLI; но последний в каждой паре отличается, хотя бы только в той степени, в которой он требует директивы using для пространства имен System. Я хотел бы аналогичным образом ввести типы в InstallScript.


person J0e3gan    schedule 16.04.2014    source источник
comment
Это базовый MSI или MSI Installscript? Последний тип проекта устарел и содержит неприятные ошибки, с которыми нужно бороться. В качестве примера, вот тот, который заставил меня воссоздать весь проект как базовый MSI: flexerasoftware.force.com/articles/en_US/ISSUE/Q212503   -  person Stein Åsmul    schedule 22.04.2014
comment
Это простой проект InstallScript. Вау - это настоящая ошибка. Я предполагаю, что это повлияет на проект InstallScript так же, как и на проект MSI InstallScript, поскольку регистрируемые системные изменения через InstallScript до того, как OnMove станет корнем проблемы. Спасибо за внимание.   -  person J0e3gan    schedule 22.04.2014
comment
Насколько я знаю, обычные проекты Installscript — это нормально, но Installscript MSI — это полная катастрофа. Эта ошибка не единственная серьезная в этом типе проекта, и я бы порекомендовал полностью переписать в Basic MSI всех, кто касается существующего MSI-файла Installscript (проекты Basic MSI с настраиваемыми действиями Installscript в порядке). Многие настройки драйверов представляют собой MSI-файл Installscript, потому что им нужны причудливые диалоги.   -  person Stein Åsmul    schedule 23.04.2014


Ответы (2)


Ответы: иногда и это зависит.

В разделе Типы данных и предопределенные структуры справочника по языку InstallScript описаны правила для данных. -type и указывает, что «некоторые типы данных можно вводить как строчными, так и прописными буквами».

Согласно Справочнику по языку, более 2/3 (13 из 18) типов данных InstallScript нечувствительны к регистру в той мере, в какой они могут быть прописными или строчными.

Интересно, что эти типы не могут быть смешанного регистра (т. е. сочетание прописных и строчных букв). Например, String (по сравнению с STRING или string) приводит к следующей ошибке времени компиляции:

Description                                     Error Code
----------------------------------------        ----------
'String': expected typedef (struct) name        C8017

Также, согласно Справочнику по языку, вот типы данных, чувствительные к регистру (чуть менее 1/3 (5 из 18)) типов данных, которые могут быть только в верхнем регистре:

  • BOOL
  • HWND
  • LIST
  • LPSTR
  • LPWSTR

Ввод этих типов данных в нижнем регистре приводит к ошибкам времени компиляции, например следующим:

Description                                     Error Code
----------------------------------------        ----------
'bool': expected typedef (struct) name          C8017

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

person J0e3gan    schedule 21.04.2014

Позвольте мне просто добавить это как отдельный ответ, чтобы перечислить несколько хороших источников информации.

Проверьте распространенные ошибки и ошибки времени выполнения Installshield здесь: http://consumer.installshield.com/common.asp?source=all . Как я уже сказал, с Basic MSI все в порядке, следует избегать только MSI Installscript.

Сообщество Installshield тоже хорошее: http://community.installshield.com/ . Как и Стефан Крюгер (MSI MVP) installsite.org с сообществом на forum.installsite.org.

person Stein Åsmul    schedule 22.04.2014