2010-02-04 5 views
7

У меня есть программа-установщик, написанная на Java с помощью Izpack. Он работает нормально в Windows XP, однако в Windows 7 он не может писать в c: \ Program Files. Как ни странно, как пользователь, запускающий этот установщик, я могу создавать папки под c: \ program files, но не из самого установщика.Не удается установить в c: Program files in Windows 7

Что мне не хватает?

+0

Что вы имеете в виду под «как пользователь работает установщик», против "не от самого инсталлятора. Как вызывается сам установщик? –

+0

Я имею в виду вручную, то есть используя проводник, я могу создавать файлы и каталоги в файлах c: \ program, но программно, то есть из этого установщика Java - я не могу – Demiurg

+0

Я, наконец, решил проблему, попросив установщика запросить соответствующую эскалацию привилегий как было предложено ниже. – Demiurg

ответ

6

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

Для Java: Запустите CMD подскажете как администратор или как администратор PowerShell и перейти к Bin директории Явы .... и запустить java.exe -jar #Full путь вашего файла JAR #, который дойдёт privledges

+0

Я запускаю приложение как admin. Как я уже упоминал, я могу создавать файлы и каталоги под c: \ program files как пользователь, запускающий установщик, но установщик не может! – Demiurg

+0

Существует большая разница между тем, чтобы быть пользователем-администратором и запускать приложение «Как администратор». Щелкните правой кнопкой мыши на установщике, и вы увидите значок sheild с запуском рядом с ним администратора. Выберите этот параметр. – Alex

+3

Запустите запрос CMD в качестве администратора или администратора, как PowerShell и перейти к Bin директории Явы .... и запустить java.exe -jar #Full путь вашего файла JAR # что дойдёт privledges – Alex

1

Вам необходимо запустить установщик как администратор. Только администратор может писать в каталог Program Files. Обычно, когда пользователь пытается внести изменения, UAC спрашивает, уверены ли вы. Это не обязательно верно для программы.

+0

Я бегу это как администратор, см. выше для более подробной информации. – Demiurg

+1

Работа в качестве администратора в Windows Vista и 7 не означает запуск в качестве администратора в Windows XP. У вас все еще есть привилегии вашего программного обеспечения для UAC. – Joel

+0

Кроме того, эти привилегии не являются транзитивными. Если вашей хост-программе был предоставлен доступ к UAC, то по умолчанию ребенок. – Joel

1

Вы пробовали использовать Run As ... Administrator?

+0

Поскольку установщик является файлом .jar, я не могу использовать «run as», но опять же, это не проблема. Я запускаю его как администратор. – Demiurg

+1

. Если вы вошли в систему как администратор, это не означает, что приложение, которое вы запускаете, получит права администратора. – anthares

+1

Чтобы быть более конкретным, вы не работаете как admin. Вы работаете как привилегированный пользователь, который может поднять до администратора с подтверждением пользовательского интерфейса. Например, всякий раз, когда вы создаете папку в проводнике, вы должны получить приглашение подтверждения UAC, спрашивающее, хорошо ли это сделать. Невозможно обойти эту проблему (без отключения UAC) - и это не волшебное решение для всех приложений. Ваше приложение должно знать об этой проблеме и попросить систему поднять (вывести диалог UAC и спросить пользователя, хорошо ли он с этим) всякий раз, когда вам нужен доступ «реального администратора». –

1

Добавить

<run-privileged/> 

к info части вашего installer.xml.

Пример из here:

<info> 
    <appname>IzPack</appname> 
    <appversion>4.2.0</appversion> 
    <authors> 
     <author email="" name="Julien Ponge (project founder)"/> 
     <author email="" name="The fantastic IzPack developers and contributors"/> 
    </authors> 
    <url>http://izpack.org/</url> 
    <javaversion>1.5</javaversion> 
    <requiresjdk>no</requiresjdk> 
    <run-privileged condition="izpack.windowsinstall.vista|izpack.macinstall"/> 
    <summarylogfilepath>$INSTALL_PATH/installinfo/Summary.htm</summarylogfilepath> 
</info> 
Смежные вопросы