Проект установки Visual Studio: получите целевой каталог

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

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

Но прежде чем я могу даже заняться, как установить полномочия через.Net I, должен знать папку установки. Я использую проект установки, который имеет класс Установщика, который содержит a ServiceInstaller управление также. Оба имеют Context свойство, таким образом, я проверял, что для параметров, которые доступны, когда событие AfterInstall стреляет для каждого из соответствующих установщиков. Я думал сначала, что я буду видеть TargetDir набор свойств, но это не имело место. Я однако вижу AssemblyPath набор и указывающий на исполняемый файл соответствующей папки.

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

private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
{
    string InstallPath = System.IO.Path.GetDirectoryName(serviceInstaller1.Context.Parameters["AssemblyPath"]);;
}
9
задан Spencer Ruport 18 February 2010 в 23:16
поделиться

4 ответа

Ваше настраиваемое действие - это отложенное настраиваемое действие, и ему доступны только определенные свойства. Дополнительные сведения см. На следующей странице, http: // msdn.microsoft.com/en-us/library/aa370543(VS.85).aspx . Вы можете добавить свойство TARGETDIR в CustomActionData в Visual Studio 2008; однако я не работал с Visual Studio 2008 в качестве инструмента для разработки.

Выполнение сложной установки в Visual Studio 2008 очень сложно, потому что она абстрагируется от ряда ключевых функций MSI. Я настоятельно рекомендую взглянуть на WiX.

Даже если вы не используете WiX, вы захотите загрузить Orca, http://msdn.microsoft.com/en-us/library/aa370557 (VS.85) .aspx и используйте его для проверки вашей установки. Это сэкономит вам бесчисленное количество часов спустя.

3
ответ дан 4 December 2019 в 12:17
поделиться

Ах - если вы говорите о «сквозной» прозрачности, нет, CSS не делает этого.

За исключением WebKit (двигатель предоставления в Сафари и Chrome), у которого есть полностью таможенное, сделанный Дэйвом Хьяттом, даже не в стоимости недвижимости CSS 3, - фоновый клип WebKit: текст; .

Его не поддерживает ни один другой браузер, кроме Safari и Chrome.

-121--3565923-

Здесь происходит несколько вещей - убедитесь, что они разделены, например,

  • Получить содержимое списка
  • Добавить информацию
  • Записать файл

Пожалуйста, обратите внимание!! Есть множество исключений, которые вы можете получить при сохранении файла, посмотреть документы и обработать их как-то...

// Get list box contents
var sb = new StringBuilder();
foreach (var item in lstBox.Items)
{
    // i am using the .ToString here, you may do more
    sb.AppendLine(item);
}
string data = sb.ToString();

// Append Info
data = data + ????....

// Write File
void Save(string data)
{
    using(SaveFileDialog saveFileDialog = new SaveFileDialog())
    {
        // optional
        saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);

        //saveFileDialog.Filter = ???;

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            File.WriteAllText(saveFileDialog.Filename);
            MessageBox.Show("ok", "all good etc");
        }
        else
        {
        // not good......
        }
    }
}
-121--4903764-

В качестве альтернативы установочным проектам можно использовать некоторые службы установки. Я думаю, что с помощью http://installer.codeeffects.com вы можете загрузить любые файлы с вашего сайта и поместить их в каталог установки, когда пользователь установит ваш сервис. Надеюсь, это поможет.

0
ответ дан 4 December 2019 в 12:17
поделиться

Насколько я могу судить, это единственный способ определить каталог для установки. Конечно, я приму к сведению, если кто-то придет с другим ответом, но до тех пор я придерживаюсь этого подхода.

-1
ответ дан 4 December 2019 в 12:17
поделиться

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

/TargetDir="[TARGETDIR]"

в качестве значения для свойства CustomActionData.

После этого вы сможете получить к нему доступ:

string targetDir = Context.Parameters[ "TargetDir" ];
0
ответ дан 4 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: