Wix 安装程序:尝试通过单击按钮 运行 自定义操作时出错 - 完成此安装所需的 DLL 不能是 运行
Wix installer: Error when tring to run a custom action from a button click - A DLL required for this install to complete could not be run
我正在 运行 执行自定义操作并收到以下错误消息:
错误 1723。此 Windows 安装程序包有问题。完成此安装所需的 DLL 不能是 运行。请联系您的支持人员或软件包供应商。操作 CheckLicenseFileExistsCA,条目:CheckLicenseFileExists,库:C:\Users\dafna\AppData\Local\Temp\MSI3395.tmp
MSI (c) (E8:04) [19:42:28:921]:产品:ReSecServer -- 错误 1723。此 Windows 安装程序包存在问题。完成此安装所需的 DLL 不能是 运行。请联系您的支持人员或软件包供应商。操作 CheckLicenseFileExistsCA,条目:CheckLicenseFileExists,库:C:\Users\dafna\AppData\Local\Temp\MSI3395.tmp
我试图搜索 google 的解决方案,但没有成功,我可能遗漏了什么...
public class CutomActions
{
[CustomAction]
public static ActionResult CheckLicenseFileExists(Session session)
{
try
{
var filename = Path.Combine(session["LICENSEFILE_DIR_PATH"], "license.dat");
var exists = File.Exists(filename);
if (exists)
{
session["LICENSE_FILE_PATH_VALID"] = "1";
}
}
catch (Exception ex)
{
return ActionResult.Failure;
}
return ActionResult.Success;
}
Here are the relevant lines:
<CustomAction Id='CheckLicenseFileExistsCA' BinaryKey='ServerInstallerCustomActions.CA' DllEntry='CheckLicenseFileExists' Execute="immediate" Return="check" /> <Binary Id='ServerInstallerCustomActions.CA' SourceFile='$(var.ServerInstallerCustomActions.TargetDir)\ServerInstallerCustomActions.dll' />
<Control Type="PushButton" Id="BrowseLicense" Width="75" Height="17" X="251" Y="101" Text="{\VSI_MS_Sans_Serif13.0_0_0}Browse" TabSkip="no">
<Publish Property="_BrowseProperty" Value="LICENSEFILE_DIR_PATH" Order="1">1</Publish>
<Publish Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
<Publish Event="DoAction" Value="CheckLicenseFileExistsCA">1</Publish>
<Publish Property="TEMP_VERIFIED" Value="[LICENSE_FILE_PATH_VALID]">1</Publish>
<Publish Property="LICENSE_FILE_PATH_VALID" Value="[TEMP_VERIFIED]" />
</Control>
还有一个配置文件(在自定义操作项目中):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="false">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
当您构建自定义操作项目时,应该有一个 post 构建事件 运行 运行s "MakeSfxCA.exe" 输出 <ProjectTargetName>.CA.dll
<- - 这是您要包含在二进制标记中的内容,而不是自定义操作项目
的 dll 输出
所以你应该使用:
<Binary Id='ServerInstallerCustomActions.CA' SourceFile='$(var.ServerInstallerCustomActions.TargetDir)\ServerInstallerCustomActions.CA.dll' />
要获得 *CA.dll,您必须使用与 WiX 工具集相关的适当 Visual Studio 模板创建您的自定义操作项目,而不仅仅是通用 Class 库。
我正在 运行 执行自定义操作并收到以下错误消息:
错误 1723。此 Windows 安装程序包有问题。完成此安装所需的 DLL 不能是 运行。请联系您的支持人员或软件包供应商。操作 CheckLicenseFileExistsCA,条目:CheckLicenseFileExists,库:C:\Users\dafna\AppData\Local\Temp\MSI3395.tmp MSI (c) (E8:04) [19:42:28:921]:产品:ReSecServer -- 错误 1723。此 Windows 安装程序包存在问题。完成此安装所需的 DLL 不能是 运行。请联系您的支持人员或软件包供应商。操作 CheckLicenseFileExistsCA,条目:CheckLicenseFileExists,库:C:\Users\dafna\AppData\Local\Temp\MSI3395.tmp
我试图搜索 google 的解决方案,但没有成功,我可能遗漏了什么...
public class CutomActions
{
[CustomAction]
public static ActionResult CheckLicenseFileExists(Session session)
{
try
{
var filename = Path.Combine(session["LICENSEFILE_DIR_PATH"], "license.dat");
var exists = File.Exists(filename);
if (exists)
{
session["LICENSE_FILE_PATH_VALID"] = "1";
}
}
catch (Exception ex)
{
return ActionResult.Failure;
}
return ActionResult.Success;
}
Here are the relevant lines:
<CustomAction Id='CheckLicenseFileExistsCA' BinaryKey='ServerInstallerCustomActions.CA' DllEntry='CheckLicenseFileExists' Execute="immediate" Return="check" /> <Binary Id='ServerInstallerCustomActions.CA' SourceFile='$(var.ServerInstallerCustomActions.TargetDir)\ServerInstallerCustomActions.dll' />
<Control Type="PushButton" Id="BrowseLicense" Width="75" Height="17" X="251" Y="101" Text="{\VSI_MS_Sans_Serif13.0_0_0}Browse" TabSkip="no">
<Publish Property="_BrowseProperty" Value="LICENSEFILE_DIR_PATH" Order="1">1</Publish>
<Publish Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
<Publish Event="DoAction" Value="CheckLicenseFileExistsCA">1</Publish>
<Publish Property="TEMP_VERIFIED" Value="[LICENSE_FILE_PATH_VALID]">1</Publish>
<Publish Property="LICENSE_FILE_PATH_VALID" Value="[TEMP_VERIFIED]" />
</Control>
还有一个配置文件(在自定义操作项目中):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="false">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
当您构建自定义操作项目时,应该有一个 post 构建事件 运行 运行s "MakeSfxCA.exe" 输出 <ProjectTargetName>.CA.dll
<- - 这是您要包含在二进制标记中的内容,而不是自定义操作项目
所以你应该使用:
<Binary Id='ServerInstallerCustomActions.CA' SourceFile='$(var.ServerInstallerCustomActions.TargetDir)\ServerInstallerCustomActions.CA.dll' />
要获得 *CA.dll,您必须使用与 WiX 工具集相关的适当 Visual Studio 模板创建您的自定义操作项目,而不仅仅是通用 Class 库。