У меня есть .net dll
, его можно зарегистрировать с помощью RegAsm
.net 3.5
и .net 4.5
Inno ошибка установки handeling (игнорировать) в RUN Раздел команды
Я использую это коды в моей настройки скрипта:
[Run]
Filename: "{dotnet40}\RegAsm.exe"; Parameters: "my.dll"; WorkingDir: "{app}"; Flags: skipifdoesntexist; StatusMsg: "Registering Controls."
Filename: "{dotnet4064}\RegAsm.exe"; Parameters: "my.dll"; WorkingDir: "{app}"; Flags: skipifdoesntexist; StatusMsg: "Registering Controls."
Filename: "{dotnet20}\RegAsm.exe"; Parameters: "my.dll"; WorkingDir: "{app}"; Flags: skipifdoesntexist; StatusMsg: "Registering Controls."
Filename: "{dotnet2064}\RegAsm.exe"; Parameters: "my.dll"; WorkingDir: "{app}"; Flags: skipifdoesntexist; StatusMsg: "Registering Controls."
- Он хорошо работает, если .net 3.5 и .net 4.5 установлены на целевой машине.
- У меня есть функция в моем скрипте для проверки .net в
InitializeSetup
. так что я знаю, один из этих версий устанавливаются на систему: v3.5 v4 v4.5
Но
мы получаем ошибку в некоторых случаях, как это: , если мы не .NET 3.5 целевая машина
Я предполагаю, что причина ошибки:
{dotnet20}
.NET Framework version 2.0 root directory. {dotnet20} is equivalent to {dotnet2032} unless the install is running in 64-bit mode, in which case it is equivalent to {dotnet2064}.
An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0 present.
Мой вопрос, как я могу справиться и игнорировать это исключение и предотвратить установку откат:
Internal error: .Net Framework version 2.0 not found.
Вы должны использовать 'Check' и в своих функциях вы должны проверить, что вы можете найти целевой бинарный файл, а также поймать, когда некоторая константа не может быть расширена, ['что-то вроде этого'] (http: // pastebin.com/Uw4kEJs1) и идеально подходит для всех записей. Поскольку это довольно много работы, я бы рассмотрел возможность записи этой регистрации исключительно в каком-то событии '[Code]. Конечно, исключение будет поднято даже там, но это немного меньше работы. Я не знаю другого способа преодолеть это в разделе '[Run]' без 'Check', который предотвратит предстоящий сбой (подходящий для этой ситуации). – TLama
Другим вариантом может быть извлечение того, как Inno Setup расширяет эти константы и использует их в коде. Это может быть исключение. – TLama
@TLama спасибо, я попробовал «проверить» перед вашим комментарием и снова увидеть ошибку. поэтому я создаю новую версию своего приложения под '.Net 4.5' и удаляю некоторые коды и ... знаю, что моя настройка работает хорошо. – RAM