Я хочу зарегистрировать свое приложение для запуска при запуске Windows на основе флажка в диалоговом окне выхода.WiX: условно зарегистрировать приложение для запуска при запуске Windows
Я следовал this, но кажется, что запись в реестр выполняется до того, как окончательный диалог (и соответствующий флажок) появится.
Мой код: в product.wxs:
<Property Id="APP_AUTOMATIC_START_UP">1</Property>
....
<Component Id="AppAutoStartUp" Guid="{MyGuid}">
<RegistryValue Id="App.rst" Root="HKCU" Action="write" Key="Software\Microsoft\Windows\CurrentVersion\Run" Name="App" Value="[#MyApp.exe]" Type="string" />
<Condition><![CDATA[Installed OR APP_AUTOMATIC_START_UP]]></Condition>
в MyExitDialog.wxs:
<Control Id="AutomaticStartup" Type="CheckBox" Height="18" Width="295" X="135" Y="190" Text="Run App upon windows startUp" Property="APP_AUTOMATIC_START_UP" CheckBoxValue="1">
<Condition Action="hide" >Installed</Condition>
<Condition Action="show" >NOT Installed</Condition>
EDIT: Я попытался добавить ключ в реестр и в случае с пользователь снимите флажок, удалив его с помощью пользовательского действия. мой код:
[CustomAction]
public static ActionResult NotRunOnStartUp(Session session)
{
session.Log("Begin NotRunOnStartUp");
RegistryKey rk = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rk.DeleteValue("MyApp");
return ActionResult.Success;
}
<Binary Id="NotRunOnStartUpBinary" src="..\CustomActions\NotRunOnStartUp\bin\$(var.Configuration)\NotRunOnStartUp.CA.dll" />
...
<CustomAction Id="NotRunOnStartUpCA"
Return="check"
Execute="immediate"
BinaryKey="NotRunOnStartUpBinary"
DllEntry="NotRunOnStartUp" />
...
<Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="NotRunOnStartUpCA">APP_AUTOMATIC_START_UP= 0 and NOT Installed</Publish>
В результате, во время инсталяции я пишу ключ реестр, но когда я снимите флажок и нажмите кнопку Готово ключ не удаляется из реестра. Любые идеи почему?
спасибо! Он уже настроен из приложения, но я все еще хочу его также от установщика. Я отредактировал свой вопрос на основе вашего ответа, попытка использования пользовательских действий не сработала. – eskadi