Ami*_*rge 11 c# custom-action wix wix3
卸载我的应用程序时,需要通知服务器,以便它可以释放分配给客户端的许可证密钥.这是通过Web服务调用完成的.
我创建了一个C#自定义动作来执行此操作.问题是,卸载程序正在退出,说它无法找到一个DLL.
msi的错误日志包含以下错误:
错误1723.此Windows Installer程序包存在问题.无法运行此安装所需的DLL.请联系您的支持人员或包装供应商.Action ReadLicenseKeyFromFile,entry:ReadLicenseKey,library:C:\ Windows\Installer\MSI4F42.tmp
我将函数ReadLicenseKey标记为自定义操作.自定义操作名为ReadLicenseKeyFromFile.
<Custom Action="ReadLicenseKeyFromFile" After="InstallInitialize">
REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE
</Custom>
<CustomAction Id="ReadLicenseKeyFromFile" BinaryKey="UnInstallCA.CA.dll" DllEntry="ReadLicenseKey" Execute="immediate" Return="check" />
<Binary Id="UnInstallCA.CA.dll" SourceFile="$(var.UnInstallCA.TargetDir)UnInstallCA.CA.dll" />
Run Code Online (Sandbox Code Playgroud)
自定义操作项目正在输出.CA.dll文件.我已经尝试安装文件作为设置的一部分,手动复制粘贴文件,没有对文件做任何事情......基本上尝试了所有可能的组合.
必须有一些我缺少的东西,所以请帮助.
Ami*_*rge 11
很遗憾浪费了每个人的时间.
解决方案太简单了.我忘了在这个特定的方法上放置[CustomAction]属性.因此,尽管这是我在CustomAction.cs文件中编写的最后一个操作,但它是第一个在InstallExecuteSequence中调用的操作.因此,我误以为它无法找到该文件.好吧,那个以及我一定很困的事实......
无论如何,在寻找答案时,我确实遇到了很多不错的资源,尤其是Wix上的Alex Shevchuks系列.我意识到的另一件事是我不必安装自定义动作DLL文件.我只是从我的Wix项目中引用它并提供它的路径.dll嵌入到设置中,并在调用卸载自定义操作时从那里进行流式处理.