安装程序成功将程序集安装到GAC中。但是,卸载程序会将程序集保留在GAC中。
我错过了什么吗?我真的不想在卸载时使用 gacutil.exe 删除程序集。
Source: "..\TestHelperInject\bin\x86\Release\TestHelperInject.dll"; DestDir: "{app}"; Flags: gacinstall sharedfile uninsnosharedfileprompt; StrongAssemblyName: "TestHelperInject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ccbe9854a3cee58d, processorArchitecture=x86"
更新:好的,所以在卸载过程中从GAC移除程序集在WinXP上运行,但在Win7上不行。
答案 0 :(得分:2)
来自Inno设置documentation:
<强> gacinstall 强>
将文件安装到.NET全局程序集缓存中。什么时候 与
sharedfile
结合使用时,只会卸载该文件 当参考计数达到零时。要卸载文件,卸载程序将使用强组件名称 由参数
StrongAssemblyName
指定。如果尝试使用此标志,则会引发异常 没有.NET Framework的系统。
因此,似乎Inno Setup会为您处理卸载。
答案 1 :(得分:0)
如果它没有卸载它,那么它被标记为使用/共享(请参阅sharedfile
标志)或StrongAssemblyName
不正确。
请注意,Inno仅要求指定StrongAssemblyName
,而不是正确或有效。
尝试使用/log
参数运行卸载,以查看卸载时报告的内容。
答案 2 :(得分:0)
可能是&#34; processorArchitecture = x86&#34;强名是一个问题。如果您将其更改为&#34; ProcessorArchitecture = MSIL&#34;?
,这是否有效(这是我从http://odd-staff.blogspot.com.au/2010/04/well.html获得的提示)