Пакет: запуск exe, копирование файла в appdata и помещение его в автозагрузку - PullRequest
0 голосов
/ 02 октября 2011

Например, у меня есть 2 exe's. Давайте назовем их 1.exe и 2.exe, чтобы было проще. И я хочу сделать zip-файл, содержащий 3 вещи: 1.exe, 2.exe и setup.bat.

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

@echo off
cls
echo Are you sure you want to install 1.exe? 
echo If not, click exit right now. If you are okay with it,
pause

А вот и первый вопрос. Итак, мы хотим запустить 1.exe. Как мне запустить 1.exe, который находится в той же папке, что и файл bat?

Хорошо, давайте продолжим. Когда 1.exe закончится, я хочу скопировать 2.exe, поместить его в %appdata%, а затем добавить его в автозагрузку. И это второй вопрос. Как мне это сделать.

Итак, вопросы:
1. Как мне запустить 1.exe, который находится на той же карте, что и setup.bat
2. Как мне скопировать 2.exe, который находится на той же карте, что и setup.bat, в %appdata%
3. Как правильно добавить 2.exe, который сейчас в %appdata%, для запуска?

Примечание: просто использование C:\documents and settings\all users\desktop\1.exe не сработает. Я хочу, чтобы он работал на всех языках, а на некоторых языках папки могут называться по-разному.

Ответы [ 3 ]

1 голос
/ 02 октября 2011

Вы правы, вы никогда не должны жестко кодировать «Документы и настройки» или «Программные файлы» в BAT-файле, потому что эти имена папок «не работают на всех языках».Вы должны обращаться к ним, используя специальные идентификаторы папок или переменные среды.

В вашем случае вам нужно создать ярлык программы (файл .LNK) в папке автозагрузки.Есть две части.

  1. , создающие ярлык.К сожалению, нет способа создать ярлык, используя только команды Windows.Вам нужно положиться на сторонний инструмент, есть много бесплатных инструментов командной строки, которые могут это сделать;или напишите свой собственный.

  2. , найдя папку «Автозагрузка» и разместив там ярлык.Есть две папки автозагрузки. общий запуск и папка user startup .Выбери один.Затем вам нужно использовать либо %ALLUSERSPROFILE%\Start Menu\Programs\StartUp, либо %USERPROFILE%\Start Menu\Programs\StartUp.

Так что, сложив все кусочки в вашем SETUP.BAT, это будет выглядеть примерно так ...

@echo off
echo Are you sure you want to install 1.exe? 
echo If not, click exit right now. If you are okay with it,
pause
1
copy 2.exe %appdata%
makelink %appdata%\2.exe %USERPROFILE%\Start Menu\Programs\StartUp\2.lnk

Одно предложение.Избегайте всего этого беспорядка.Мне кажется, что вам нужно установить программу.Если это так, я бы порекомендовал вам попробовать Inno Setup .http://www.jrsoftware.org/.

Inno Setup - это бесплатный установщик для Windows.Впервые представленная в 1997 году, Inno Setup сегодня конкурирует и даже превосходит многие коммерческие установщики по набору функций и стабильности.

...

  • Поддерживает созданиеодного EXE, чтобы установить вашу программу для удобного распространения в Интернете.Также поддерживается охват диска.

  • Стандартный интерфейс мастера в стиле Windows 2000 / XP.

  • Настраиваемые типы настроек, например, Полный, Минимальный, Пользовательский.

  • Полные возможности удаления.

  • Установка файлов. Включает встроенную поддержку сжатия файлов "deflate", bzip2 и 7-Zip LZMA / LZMA2.Программа установки имеет возможность сравнивать информацию о версии файла, заменять используемые файлы, использовать подсчет общего файла, регистрировать библиотеки DLL / OCX и библиотеки типов и устанавливать шрифты.

  • Создание ярлыков в любом месте, в том числе в меню «Пуск» и на рабочем столе.

  • Создание реестра и записей .INI.

  • Запуск других программ до, во время или после установки.

  • ...

1 голос
/ 02 октября 2011

1.exe будет запускаться 1.exe, как в командной строке. copy 2.exe %appdata% скопирует 2.exe. Я не знаю, что означает вопрос 3.

Определить "работать на всевозможных языках"? Если вам нужно передать аргумент в пакетный файл, сделайте так: http://commandwindows.com/batch.htm

0 голосов
/ 06 октября 2011

Это должно делать то, что вы хотите.

@echo off
cls
echo Are you sure you want to install 1.exe? 
echo If not, click exit right now. If you are okay with it,
pause
start /wait 1.exe
xcopy 2.exe %appdata% /y
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "2" /d %appdata%\2.exe

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...