我使用WiX开发了一个简单的安装包,它将一个名为WBRT.Configuration
的程序集安装到全局程序集缓存(GAC)中。安装文件时,卸载软件包时不会删除它。
我尝试以管理员身份运行命令提示符,使用msiexec / x指定msi文件名,使用msiexec / x指定产品代码。
使用/ l * v开关,没有错误:
Executing op: ActionStart(Name=MsiUnpublishAssemblies,Description=Unpublishing assembly information,Template=Application Context:[1], Assembly Name:[2])
Executing op: AssemblyUnpublish(,,AssemblyType=1,,AssemblyName=WBRT.Configuration,version="1.0.0.0",culture="neutral",publicKeyToken="361AD75BADC53912",processorArchitecture="MSIL",Descriptor=2-(xWui~z@UnhQuo-~Gh>S.OwM9Kim9x0ul%Ore=9)
Executing op: ActionStart(Name=UnpublishFeatures,Description=Unpublishing Product Features,Template=Feature: [1])
WiX文件元素
<File Id="filB7155C3E9A241BEAFE09533364964732" KeyPath="yes" Assembly=".net" Source="$(var.Configuration.TargetDir)\WBRT.Configuration.dll" />
Orca中的MsiAssemblyName表
GAC中的文件
GAC中文件的版本标签
我完全难倒。有没有人有想法?
答案 0 :(得分:1)
首先,验证您的程序集未被其他进程锁定 通过gacutil.exe
gacutil /u WBRT.Configuration
如果上面的确定,请确保文件父容器没有永久标志 -
Permanent="no"
<Component Shared="yes" Permanent="no" Guid="PUT-GUID-HERE" >
<File Id="filB7155C3E9A241BEAFE09533364964732" KeyPath="yes" Assembly=".net"
Source="$(var.Configuration.TargetDir)\WBRT.Configuration.dll" />
</Component>
答案 1 :(得分:1)
我按照@Mohsen提到的步骤,删除了注册表项并从GAC卸载了DLL以解决冲突问题。
[HKLM \ SOFTWARE \ Classes \ Installer \ Assemblies \ Global]并运行gacutil / u dllname -And success。 我不知道副作用是什么。它对我有用,然后我跑了
gacutil -u dllThatIWantedToRemove