Пользовательские действия проекта установщика - укажите рабочий каталог - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть настраиваемое действие, которое запускается как развертывание проектов установщика Visual Studio.

Можно ли указать рабочий каталог этого настраиваемого действия относительно каталога установки?

Редактировать

Для пояснения

У меня есть проект установщика, который запускает программу как пользовательское действие.Я хочу указать рабочий каталог этой программы из проекта установщика, поэтому, когда программа запускается во время установки, она будет работать с рабочим каталогом, который я указал во время создания установщика.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

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

> public static string GetAssemblyPathByCodeBase() {
>     string codeBase = Assembly.GetExecutingAssembly().CodeBase;
>     UriBuilder uri = new UriBuilder(codeBase);
>     return Path.GetDirectoryName(Uri.UnescapeDataString(uri.Path)); }

Общая проблема заключается в том, что когда программа запускается, скажем, двойным щелчком, тогда оболочка Explorer устанавливает рабочий каталог каккаталог хостинга.Установщик Windows не делает этого.

0 голосов
/ 26 сентября 2018

Рабочий каталог : Это пользовательское действие EXE?Пользовательские действия в установщиках Visual Studio Проекты выполняются в deferred mode, system context - это означает, что они выполняются как System / LocalSystem.Я, честно говоря, не уверен, что это делает с "working folder".Я предполагаю, что это просто означает, что рабочая папка - это то место, откуда запускается исполняемый файл.

Ограничения проекта установщика VS : в проектах установщика Visual Studio отсутствует возможность настройки расширенных параметровнастройки в целом.Существует способ запустить EXE-файл и указать рабочую папку, но он не поддерживается этими проектами.Я также не уверен, решит ли это вашу проблему, прежде чем мы узнаем, что вы на самом деле используете.Это может быть сценарий. Существует несколько основных проблем с этими установочными проектами .

Пользовательское действие : Тип 34 Пользовательское действие позволяет вамдо Run an EXE file having a path referencing a directory.Вам нужно либо исправить свой выходной MSI с помощью Orca, либо использовать реальное средство развертывания, такое как WiX, или аналогичные коммерческие опции .Хотя я не пробовал, WiX должен быть способен делать то, что вы хотите - как и все другие крупные коммерческие опции.

Исправление : Исправление MSI являетсяв некоторой степени означает, что вы должны добавить записи в CustomAction Table и InstallExecuteSequence Table.Вам не нужно добавлять двоичный файл в двоичную таблицу 1053 *, если это файл, который вы хотите запустить после установки, или это файл, который уже существует на диске.Для столбца настраиваемого действия Type необходимо установить несколько флагов, которые относятся к тому, выполняется ли действие синхронно или асинхронно, хотите ли вы прервать работу при ошибке или нет, какую последовательность она будет выполнятьи тому подобное.Вы комбинируете битовые поля.

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