Как я могу определить текущего пользователя для входа в Wix toolset? - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь собрать установщик с помощью Wix, и мне нужно поместить файл в папку автозагрузки.Я уже узнал, как построить путь к папке автозагрузки, но я не могу найти переменную, которая может идентифицировать текущего пользователя.

Это то, что я сделал на данный момент, и это работает, но частьс именем пользователя просто создает новый каталог с таким именем

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Есть пара вещей, которые, вероятно, не соответствуют вашей идее:

  1. Вам не нужно создавать все это дерево каталогов, чтобы добраться до StartupFolder, потому что уже есть стандартная WindowsСвойство установщика с именем StartupFolder .Это уже путь к папке запуска текущего пользователя, поэтому не ясно, зачем вам нужно значение LogonUser.

  2. Свойства разрешаются путем помещения их в квадратные скобки, поэтому в случае general вы используете [LogonUser], но имена каталогов в таблице Directory не являютсяпомечен как форматированный тип, поэтому вызов каталога [LogonUser] не будет работать.Вам нужно установить другое открытое свойство в значение [LogonUser], а затем использовать это свойство в качестве имени каталога.Тем не менее, я думаю, что пункт 1. может быть все, что вам нужно, и ваше дерево каталогов не ясно о ваших намерениях.

0 голосов
/ 13 июня 2018

Запуск при запуске

Обычно вы помещаете ярлык в файл в папке автозагрузки, а не в настоящий файл.Вы делаете это, ссылаясь на встроенное свойство установщика Windows StartupFolder , как показано в образце макета ниже (и как указано Филом).

ВСуществует множество способов запланировать что-то, чтобы начать с Windows. Что это за тип файла и что он делает? Если вам интересно, вы можете увидеть несколько способов запуска чего-либо при входе в систему или при загрузке, запустив AutoRuns (от SysInternals).Существует шокирующий набор возможностей (небольшое отступление).

Очень часто вы можете запускать вещи как службы или запланированные задачи , а не использовать другие функции запуска.Обычно сервисы для функций, которые должны работать непрерывно, и запланированные задачи для вещей, которые должны запускаться время от времени.Я думаю, что большинство людей хотят избежать слишком большого количества вещей, работающих при входе в систему - если они действительно не нужны.Я нахожу папку запуска "неуклюжей", а также склонной к вмешательству пользователя.


Самовосстановление и папка запуска

Эта статья экспертов по обмену описывает случай, когда самовосстановление было инициировано после удаления записи папки автозагрузки (выполните поиск по запросу «автозагрузка», чтобы найти раздел).

Честно говоря, я немного удивлен описанным сценарием.Когда ярлык удален, он не должен легко возвращаться автоматически, так как он обычно не является ключевым путем его хост-компонента.Тем не менее, есть что проверить при тестировании MSI (удалите ярлык, а затем запустите приложение напрямую - если есть ярлык для этого).Если вы видите проблему, пожалуйста, сообщите нам.

Если бы я догадался, что на самом деле произошло, они могли бы установить фактический файл в папку ярлыков и задать его в качестве пути к ключу (как это кажетсяты тоже так пытаешься).Затем они поместили это в ту же иерархию функций, что и рекламируемый ярлык - ту же функцию, или верхнюю функцию приложения, или родительскую функцию - в результате чего самовосстановление всегда будет вызываться при вызове объявленного ярлыка и отсутствующего файла.обнаруживается в папке «Автозагрузка», после чего выполняется самовосстановление.

Отступление : значительное отступление, важно проверить это для настройки!Подобные проблемы действительно обостряют ваших пользователей - их причина, как правило, ускользает от их поддержки.


Образец макета WiX

Вот один пример того, как установитьярлык для папки автозагрузки.Обратите внимание, что папка «Автозагрузка» перенаправляется в зависимости от того, установлена ​​ли установка для каждого пользователя или компьютера, как указано в MSDN: StartupFolder .

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="Startup Shortcut" Manufacturer="Someone" Version="0.0.1" 
             Language="1033" UpgradeCode="PUT-GUID-HERE">
        <Package InstallScope="perMachine" Compressed="yes" />
        <Media Id="1" Cabinet="my.cab" EmbedCab="yes" />

        <UIRef Id="WixUI_Mondo" /> <!-- Just include a default setup GUI -->

        <Directory Id="TARGETDIR" Name="SourceDir">

            <Directory Id="ProgramFilesFolder" Name="PFiles">
                <Directory Id="MyCompany" Name="Company">
                    <Directory Id="MyAPP" Name="MyApp">

                        <Component Feature="MyFeature">

                            <File Source="MyApp.exe" />

                            <!-- Set Advertise="no" to avoid advertised shortcut -->
                            <Shortcut Id="MyApp" Directory="StartupFolder" Name="MyApp"
                                      Advertise="yes" />

                        </Component>

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

        <Feature Id="MyFeature" Absent="disallow" />        
        <Property Id="MSIFASTINSTALL" Value="7" /> <!-- Tweak to install faster -->

    </Product>
</Wix>
0 голосов
/ 12 июня 2018

Это должно быть свойство, автоматически устанавливаемое в установщике во время выполнения, LogonUser .

...