Я использую пользовательское действие для запуска функции из dll, но когда я запускаю созданную мной msi, я получаю сообщение об ошибке:
"Возникла проблема с этим windows установочным пакетом. Не удалось запустить DLL, необходимую для завершения этой установки. Обратитесь в службу поддержки ... "
Это то, что я сделал:
<Fragment>
<UI>
<Dialog Id="UserRegistrationDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&Next">
<Publish Event="DoAction" Value="MyCustomAction">1</Publish>
<Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">CostingComplete = 1</Publish>
<Publish Event="NewDialog" Value="SetupTypeDlg">ProductID</Publish>
</Control>
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" />
<Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
<Text>Please enter your customer information</Text>
</Control>
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
<Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes">
<Text>{\WixUI_Font_Title}Customer Information</Text>
</Control>
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
<Control Id="PlatformCombobox" Type="ComboBox" X="45" Y="127" Width="220" Height="18" ComboList="yes" Sorted="yes" Property="Platform">
<ComboBox Property="Platform">
<ListItem Value="1" Text="1"/>
<ListItem Value="2" Text="2 "/>
<ListItem Value="3" Text="3 "/>
<ListItem Value="4" Text="4 "/>
</ComboBox>
</Control>
</Dialog>
</UI>
<Property Id="Platform" Value="2" />
<CustomAction Id='MyCustomAction' BinaryKey='CreateFile' DllEntry='CreateFile'/>
<Binary Id='CreateFile' SourceFile='SetupDll.dll'/>
</Fragment>
Как видите, я пытаюсь запустите SetupDll.dll, который содержит 1 класс с 1 функцией:
using System.IO;
using Microsoft.Deployment.WindowsInstaller;
namespace SetupDll
{
public class Creator
{
[CustomAction]
public static ActionResult CreateFile(Session session)
{
File.WriteAllText(@"C:\a.txt", "123");
return ActionResult.Success;
}
}
}
Но я не понимаю проблемы. Я поместил полученный файл SetupDll.dll в каждую папку проекта wix.
Спасибо!