[英]Wix: Can't set a property with a custom action
我的安装程序中有一个对话框,用于输入激活密钥。 我可以通过此控件传递值,
<Control Id="KEY1" Type="Edit" Property="KEY1" Height="17" Width="45" X="50" Y="150" Text="{5}" Indirect="no"/>
按照我的习惯行动
session["KEY1"]
但是我似乎无法弄清楚为什么我不能设置session [“ KEY1”] =“ test”并看到控件中的值...我尝试了一切,但无济于事。 这是我当前的代码,
C#(自定义操作)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Deployment.WindowsInstaller;
namespace Test.CustomActions
{
public class CustomActions
{
[CustomAction]
public static ActionResult TestAction(Session session)
{
session.Log("Begin CustomAction1");
session["KEY1"] = "lol";
string[] lines = { session["KEY1"], "Second line", "Third line" };
System.IO.File.WriteAllLines(@"C:\CustomAction.txt", lines);
return ActionResult.Success;
}
}
}
维克斯
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<Property Id="KEY1" Value="Test" Secure="yes"/>
<Property Id="Key2"/>
<Property Id="Key3"/>
<Property Id="Key4"/>
<Property Id="Key5"/>
<Property Id="Key6"/>
<UI>
<Dialog Id="ActivationCodeDlg" Width="370" Height="270" Title="!(loc.InstallDirDlg_Title)">
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.InstallDirDlgBannerBitmap)"/>
<Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="{\WixUI_Font_Title}Activation Code"/>
<Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="Please enter your activation code"/>
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0"/>
<Control Id="KEY1" Type="Edit" Property="KEY1" Height="17" Width="45" X="50" Y="150" Text="{5}" Indirect="no"/>
<Control Id="Hyphen1" Type="Text" Height="17" Width="5" X="96" Y="153" Text="-"/>
<Control Id="Key2" Type="Edit" Property="Key2" Height="17" Width="45" X="100" Y="150" Text="{5}"/>
<Control Id="Hyphen2" Type="Text" Height="17" Width="5" X="146" Y="153" Text="-"/>
<Control Id="Key3" Type="Edit" Property="Key3" Height="17" Width="45" X="150" Y="150" Text="{5}"/>
<Control Id="Hyphen3" Type="Text" Height="17" Width="5" X="196" Y="153" Text="-"/>
<Control Id="Key4" Type="Edit" Property="Key4" Height="17" Width="45" X="200" Y="150" Text="{5}"/>
<Control Id="Hyphen4" Type="Text" Height="17" Width="5" X="246" Y="153" Text="-"/>
<Control Id="Key5" Type="Edit" Property="Key5" Height="17" Width="45" X="250" Y="150" Text="{5}"/>
<Control Id="Hyphen5" Type="Text" Height="17" Width="5" X="296" Y="153" Text="-"/>
<Control Id="Key6" Type="Edit" Property="Key6" Height="17" Width="15" X="300" Y="150" Text="{1}"/>
<Control Id="Activate" Type="PushButton" X="50" Y="200" Width="56" Height="17" Text="Activate">
<Publish Event="DoAction" Value="Testing"/>
</Control>
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0"/>
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)"/>
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)"/>
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
</Dialog>
</UI>
<CustomAction Id='Testing' BinaryKey='FooBinary' DllEntry='TestAction' Execute='immediate'/>
<Binary Id='FooBinary' SourceFile='Feenics.Keep.CustomActions.CA.dll'/>
</Fragment>
</Wix>
您的InstallExecuteSequence / InstallUISequence代码在哪里?
<InstallUISequence>
<Custom Action="Testing" Sequence="1" />
</InstallUISequence>
也许添加它会使此自定义操作在调用UI对话框之前发生。
编辑:另外,您是否已完成安装程序的任何详细调试(详细日志记录),以检查正在发生的事情以及何时运行? 输出.MSI后,打开命令提示符并执行以下操作:
msiexec.exe /i <yourmsi> /l*vx Output.txt
这将为您提供详细的信息输出!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.