Как: сделать запуск программы при запуске Windows с помощью wix toolset?

У меня есть простое приложение "Hello World" для оконных форм (созданное в VS-2013).
Как запустить приложение при запуске Windows с помощью WIX Toolset?
Должен работать в windows7 и windows8.
Это Product.wxs у меня сейчас.

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="Installer" Language="1033" Version="1.0.0.0" Manufacturer="DMC" UpgradeCode="808c333f-09f7-45d5-a5ab-ea104c500f2b">
        <Package Id="*" InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate />
        <Feature Id="ProductFeature" Title="Installer" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>
    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="HelloWorld" />
            </Directory>
      <Directory Id="StartupFolder">
      </Directory>
        </Directory>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Guid="{A4744AE7-211C-42A0-887D-1701D242776C}">
        <File Source="$(var.HelloWorld.TargetPath)" KeyPath="yes" />
      </Component>
  </ComponentGroup>
    </Fragment>
</Wix>

РЕДАКТИРОВАТЬ:
Спасибо за помощь, но не достаточно хорошо для меня. Где добавить эти теги? Должен ли я создать ярлык, или wix сделает это для меня? Нужно ли включать ярлык для wix и как? Нужно ли включать.ico в проект wix и как? Мне нужно пошаговое объяснение, чтобы понять это. Whole Product.wxs для Hello World пример проекта будет лучшим.
Изменить 2:
Я до сих пор не знаю, как решить эту проблему с помощью wix. Я использовал другой подход: Как запустить приложение C# при запуске Windows?

3 ответа

Решение

У меня не было времени, чтобы протестировать структуру в моем проекте Wix Directory дома, но, с самого начала, структура каталогов должна выглядеть примерно так

<Directory Id="TARGETDIR" Name="SourceDir"> 
  <Directory Id="ProgramFilesFolder"> 
    <Directory Id="INSTALLDIR" .. > 
      <Component ... > 
        <File ... > 
          <Shortcut Id=".." Directory="StartupFolder" ...> 
            <Icon ... /> 
          </Shortcut> 
        </File> 
      </Component> 
    </Directory> 

    <!-- ADD THIS --> 
    <Directory Id="StartupFolder" ...> 
      <Directory Id="MyShortcutFolder" ... /> 
    </Directory> 
  </Directory> 
</Directory> 

** ОБНОВИТЬ **

По умолчанию Фрагмент, содержащий структуру Справочника, находится сразу после элемента продукта.

Во фрагменте, который объявляет структуру каталогов, необходимую для вашей установки, вы добавите ссылку на каталог в папку "Автозагрузка" в Windows.

После этого вы должны создать компонент, который попросит его взять файл и создать ярлык в каталоге, который вы передаете в качестве ссылки (папка запуска).

При запуске установщик скопирует ярлык в файл, указанный в каталоге, на который вы ссылались.

** ИЗ ВАШЕГО ИСТОЧНИКА **

Во фрагмент, содержащий компоненты вашего продукта, добавьте эту декларацию.

<DirectoryRef Id="StartupFolder">
  <Component Id="ApplicationShortCutStartUp" Guid="{BCC2E481-53AF-4690-912D-1051B930B910}">
    <Shortcut Id="AppShortCutStartUp" Name="DMC"
              Description="DMC HELLO"
              Target="[INSTALLDIR][[ NAME OF YOUR EXE]]"
              WorkingDirectory="INSTALLDIR" />


    <RegistryKey Root="HKLM" Key="DMC\HelloWorld" Action="createAndRemoveOnUninstall">
      <RegistryValue Name="ShortCutStartUp" Type="integer" Value="1" KeyPath="yes"  />
    </RegistryKey>        
  </Component>

</DirectoryRef>

В теге Feature под продуктом добавьте ссылку на ваш новый компонент, чтобы теперь ваша декларация продукта выглядела так

  <Product Id="*" Name="Installer" Language="1033" Version="1.0.0.0" Manufacturer="DMC" UpgradeCode="808c333f-09f7-45d5-a5ab-ea104c500f2b">
    <Package Id="*" InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate />
    <Feature Id="ProductFeature" Title="Installer" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
      <ComponentGroupRef Id="ApplicationShortCutStartUp" />
    </Feature>
  </Product>

Это скопирует ярлык в вашу папку запуска для вашего компьютера.

РЕГУЛИРОВКА

Это:

<ComponentGroupRef Id="ApplicationShortCutStartUp" />

Должно быть

<ComponentRef Id="ApplicationShortCutStartUp" />

Это:

<!-- ADD THIS --> 
<Directory Id="StartupFolder" ...> 
  <Directory Id="MyShortcutFolder" ... /> 
</Directory> 

Должно быть:

<Directory Id="StartupFolder" ...> 
</Directory> 

Это должно исправить ваши две ошибки

Я создал запись в реестре.

<FeatureId="ProductFeature"Title="MyApp"Level="1">
    <ComponentRefId="RegistryEntries"/>
</Feature>

<Fragment>
    <DirectoryRef Id="ApplicationProgramsFolder">

      <Component Id="RegistryEntries" Guid="1efc6d21-bf25-498d-b293-0f4ed02b6fbF">
        <RegistryKey Root="HKCU"
                     Key="Software\Microsoft\Windows\CurrentVersion\Run"
              Action="createAndRemoveOnUninstall">
          <RegistryValue Type="string" Name="MyApp" Value="[#MyApp.exe]" KeyPath="yes"/>          
        </RegistryKey>
      </Component>
    </DirectoryRef>
  </Fragment>

Вы можете запустить программу только при запуске Windows, сделав ее службой или, возможно, задачей "Расписание задач", которая запускает ее при запуске Windows. Однако в этот момент никто не вошел в систему (и, возможно, некоторое время не будет входить в систему), поэтому вы не можете запускать приложения, требующие использования рабочего стола. Если вы действительно имеете в виду "когда пользователь входит в систему", то есть по крайней мере несколько вариантов:

  1. Добавьте ярлык к приложению в папке "Автозагрузка меню программы".

  2. Добавьте путь к приложению в реестре. Запустите ключ. https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977(v=vs.85).aspx

Другие вопросы по тегам