Я использую Inno Setup для создания своей установки. Все работает нормально, но я столкнулся с проблемой: как зарегистрировать .NET DLL, чтобы сделать ее доступной через COM+. Как мы все знаем, .NET предоставляет для этого RegSvcs.exe
, поэтому я проверил документацию Inno Setup и нашел только gacinstall, который предназначен для регистрации сборки, но не используется для взаимодействия COM+. Поэтому я добавил это в раздел [Run]
; register .Net components for com+
Filename: {win}\Microsoft.NET\Framework\v4.0.30319\RegSvcs.exe; Parameters: "{app}\bin\Common.dll"; Description: Component registration; WorkingDir: {app}\bin; StatusMsg: Component registration...; Flags: waituntilterminated
Но при тестировании установки эта строка просто пропускается. DLL копируется в цель ранее в разделе [Files]
и доступна. После установки я могу без проблем вручную запустить RegSvcs.exe из командной строки.
{dotnet40}
в пути к файлу, чтобы получить путь к .NET 4.0 в зависимости от того, в каком режиме работает установка (32-разрядная или 64-разрядная), или использовать{dotnet4032}
для получения 32-разрядный путь .NET 4.0 или{dotnet4064}
для 64-разрядного. Он удаляет жесткое кодирование вашего пути. - person TLama   schedule 14.08.2012WorkingDir
, но я думаю, это не должно быть проблемой). В любом случае, какую версию Windows вы используете, Vista up? Если да, то запускаете ли вы свою установку с повышенными правами администратора? - person TLama   schedule 14.08.2012runasoriginaluser
в свою запись запуска, но это все еще только предположение... - person TLama   schedule 14.08.2012runasoriginaluser
? По умолчанию используется флагrunascurrentuser
, который наследует учетные данные от мастера (когда флагpostinstall
не используется), поэтому это единственное возможное решение, которое я могу придумать. Если нет, не стесняйтесь опубликовать и принять свой собственный ответ (и я проголосую за него :-) - person TLama   schedule 27.08.2012