SolidWorks插件发布踩坑实录:从RegAsm报错到安装包权限,我的C#二次开发交付心得
SolidWorks插件发布全流程避坑指南从代码签名到权限管理的实战经验第一次看到自己开发的SolidWorks插件在同事电脑上成功加载时那种成就感难以言喻。但在此之前我经历了无数次为什么在我机器上能运行到他那里就报错的崩溃时刻。本文将分享从代码编译到最终交付的全流程经验特别是那些官方文档不会告诉你的细节陷阱。1. 开发环境与工具链的标准化配置1.1 框架版本一致性检查很多开发者忽略的第一个坑就是.NET框架版本。SolidWorks对.NET版本有严格兼容性要求而Visual Studio默认可能使用最新框架。通过项目属性→应用程序→目标框架确保选择SolidWorks官方推荐的版本通常为.NET Framework 4.7.2。!-- .csproj文件中建议的配置 -- PropertyGroup TargetFrameworkVersionv4.7.2/TargetFrameworkVersion PlatformTargetx86/PlatformTarget /PropertyGroup必须验证的三项环境参数SolidWorks版本对应的.NET框架要求开发机与目标机的系统位数32/64位注册表访问权限需求1.2 必备工具清单不同于简单的控制台应用插件开发需要全套发布工具支持工具名称用途备注Inno Setup安装包制作建议6.2.0版本Signtool代码签名Windows SDK自带Dependency Walker依赖检查排查DLL缺失Process Monitor权限诊断来自Sysinternals套件提示所有工具建议固定版本号避免因工具更新导致构建流程异常2. 注册机制的深度优化方案2.1 告别批处理Inno Setup原生注册方案传统批处理脚本注册方式存在三大缺陷依赖特定路径下的RegAsm.exe无法正确处理安装回滚缺乏权限提升机制改用Inno Setup的[Code]段实现更可靠的注册[Code] procedure RegisterAddIn(); var ResultCode: Integer; begin Exec(ExpandConstant({dotnet4064}\RegAsm.exe), ExpandConstant({app}\MyAddin.dll /codebase /tlb), , SW_HIDE, ewWaitUntilTerminated, ResultCode); end;2.2 64位系统的特殊处理当目标系统为64位时必须特别注意注册重定向问题。通过Inno Setup的[Registry]段明确指定注册表视图[Registry] Root: HKLM64; Subkey: SOFTWARE\SolidWorks\AddIns\{{GUID}}; \ ValueType: dword; ValueName: Description; ValueData: My Addin; \ Flags: uninsdeletekey关键参数对比参数32位系统64位系统RootHKLMHKLM64RegAsm路径{dotnet40}{dotnet4064}依赖项路径System32SysWOW643. 权限管理的进阶技巧3.1 安装目录权限配置Windows 10/11的安全机制会导致插件加载失败需要在安装脚本中添加显式权限设置[Dirs] Name: {app}; Permissions: users-modify3.2 运行时权限请求对于需要访问特殊目录的插件应在代码中动态请求权限// 检查并请求管理员权限 if (!IsRunAsAdministrator()) { var info new ProcessStartInfo(Assembly.GetEntryAssembly().Location) { UseShellExecute true, Verb runas }; Process.Start(info); Environment.Exit(0); }4. 安装包的专业化增强4.1 数字签名实施流程未签名的安装包会被Windows SmartScreen拦截。使用signtool进行双签名signtool sign /fd SHA256 /a /tr http://timestamp.digicert.com /td SHA256 setup.exe signtool timestamp /tr http://timestamp.sectigo.com /td SHA256 setup.exe4.2 自动化构建集成在VS后期生成事件中实现一键打包Target NamePostBuild AfterTargetsPostBuildEvent Exec Commandquot;$(SolutionDir)Tools\ISCC.exequot; quot;$(ProjectDir)SetupScript.issquot; / /Target5. 疑难问题排查手册5.1 插件加载失败的诊断步骤检查SolidWorks加载日志%appdata%\SolidWorks\addins.log使用Process Monitor监控注册表访问验证DLL依赖项使用Dependency Walker5.2 常见错误代码解决方案错误代码可能原因解决方案0x80070005权限不足启用安装目录的写入权限0x80131047强名称不匹配重新生成密钥对并签名0x80004005COM注册失败检查RegAsm版本匹配性记得上次在客户现场调试时发现他们的组策略限制了COM组件注册最后通过预先生成reg文件才解决问题。这种环境差异问题往往需要现场经验才能快速定位。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2481120.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!