Переменные в аргументах ярлыков игнорируются для проекта установки Visual Studio - PullRequest
4 голосов
/ 23 марта 2011

Я искал альтернативу деинсталляции в проекте установки (при чтении this ) и попробовал следующее, что, к сожалению, не удалось:

Я создал проект установки для фиктивногоприложение в C #.Я добавил вывод из его сборки и файл Uninstall.bat с этим внутри:

echo %1
msiexec /x %1

Затем я добавил ярлык к этому файлу с [Product Code] в поле Аргументы ярлыка:

Shortcut

Мое обоснование состояло в том, что Uninstall.bat будет вызываться с кодом продукта (разрешен) в качестве аргумента.

После установки этого параметра, кубик не передается, аргумент не передаетсявместе с установщиком из ярлыка.Вывод из командного окна:

ECHO is on.
msiexec /x

Параметр %1 отсутствует.Заглянув внутрь файла LNK в бинарном редакторе, код продукта, кажется, присутствует.

Что здесь происходит?

Дальнейшие попытки для различных аргументов и простого эха:

  1. [Product Code] -> игнорируется
  2. {%hardcodedProductCode%} -> передается партии как %1
  3. [Product Name] -> игнорируется
  4. Constant [Product Code] ->Только константа передается партии как %1
  5. [Product Name] Constant [Product Code] -> Только константа передается партии как %1, а не %2
  6. [Product Name] Constant [Product Code] [UndeclaredVariable123] -> Только константапередается в пакет как %1
  7. $[Product Code] -> $ только передается в пакет как %1

5-й пример показывает, что переменные каким-то образом игнорируются, есликонстанта находится в положении 1.

1 Ответ

3 голосов
/ 23 апреля 2011

Прежде всего, почему вы добавляете $?

Параметры определены в квадратных скобках.

Установить [ProductCode] или [PRODUCTCODE]

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

Также посмотрите здесь, http://www.gogototo.com/how-to-add-a-uninstall-option-in-visual-studio-setup-project-without-writing-code.html

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