Я искал альтернативу деинсталляции в проекте установки (при чтении this ) и попробовал следующее, что, к сожалению, не удалось:
Я создал проект установки для фиктивногоприложение в C #.Я добавил вывод из его сборки и файл Uninstall.bat с этим внутри:
echo %1
msiexec /x %1
Затем я добавил ярлык к этому файлу с [Product Code]
в поле Аргументы ярлыка:
Мое обоснование состояло в том, что Uninstall.bat будет вызываться с кодом продукта (разрешен) в качестве аргумента.
После установки этого параметра, кубик не передается, аргумент не передаетсявместе с установщиком из ярлыка.Вывод из командного окна:
ECHO is on.
msiexec /x
Параметр %1
отсутствует.Заглянув внутрь файла LNK в бинарном редакторе, код продукта, кажется, присутствует.
Что здесь происходит?
Дальнейшие попытки для различных аргументов и простого эха:
[Product Code]
-> игнорируется {%hardcodedProductCode%}
-> передается партии как %1
[Product Name]
-> игнорируется Constant [Product Code]
->Только константа передается партии как %1
[Product Name] Constant [Product Code]
-> Только константа передается партии как %1
, а не %2
[Product Name] Constant [Product Code] [UndeclaredVariable123]
-> Только константапередается в пакет как %1
$[Product Code]
-> $
только передается в пакет как %1
5-й пример показывает, что переменные каким-то образом игнорируются, есликонстанта находится в положении 1.