Tôi đang cố gắng cài đặt Java bằng chế độ im lặng và cũng chỉ định thư mục cài đặt có chứa dấu cách. Khi tôi làm điều này nó bật lên "Windows Installer" hộp thoại chỉ ra một trong các tham số là không chính xác. Nếu tôi sử dụng tên đường dẫn ngắn nó hoạt động chính xác, nhưng tôi thực sự không muốn sử dụng tên thư mục ngắn vì đó là giá trị được lưu trữ trong Registry.Cài đặt Java với cài đặt im lặng vào một thư mục có dấu cách
Lệnh Tôi muốn sử dụng ...
jre-6u39-windows-i586.exe /s INSTALLDIR="C:\Program Files (x86)\Java"
này bật lên hộp thoại Windows Installer.
Khi tôi sử dụng ...
jre-6u39-windows-i586.exe /s INSTALLDIR=C:\Progra~2\Java
này hoạt động.
LƯU Ý: "Program Files (x86)" chỉ là một ví dụ. Điều này được cài đặt tại các trang web của khách hàng và họ chọn thư mục cài đặt, do đó chúng tôi phải có khả năng hỗ trợ bất kỳ thư mục nào mà họ có thể chỉ định.
Bất kỳ ý tưởng nào tôi có thể thực hiện cài đặt im lặng nhưng vẫn sử dụng tên đường dẫn dài?
UPDATE:
Tôi nghĩ tôi sẽ chia sẻ giải pháp cuối cùng. Một điều thú vị mà tôi thấy rằng tôi muốn chia sẻ là bạn có thể chặn tự động khởi động lại quá trình cài đặt và nó trả lại mã thoát 3010. Vì vậy, bạn có thể trì hoãn việc khởi động lại vào một thời điểm khác. Đây là mã (viết lại một chút để loại bỏ một loạt các sự trừu tượng của chúng ta)
public bool InstallJava(string installPath, string logFile)
{
bool rebootRequired = false;
string fullLogFileName = Path.Combine(logFile, "JavaInstall.log");
string arguments = string.Format("/s /v\"/qn REBOOT=Suppress INSTALLDIR=\\\"{0}\\\" STATIC=1 /L \\\"{1}\\\"\"", installPath, fullLogFileName);
ProcessStartInfo startInfo = new ProcessStartInfo { RedirectStandardError = true, RedirectStandardOutput = true, RedirectStandardInput = true, UseShellExecute = false, CreateNoWindow = true,
FileName = "jre-7u25-windows-x64.exe", Arguments = arguments };
var process = Process.Start(startInfo);
process.WaitForExit();
if (process.ExitCode == 3010)
rebootRequired = true;
else if (process.ExitCode != 0)
{
// This just looks through the list of error codes and returns the appropriate message
string expandedMessage = ExpandExitCode(StringResources.JAVA_INSTALL_ERROR, process.ExitCode, fullLogFileName);
throw new Exception(expandedMessage);
}
return rebootRequired;
}
Bạn đã cố gắng% ProgramFiles%? – vqdave
Tôi xin lỗi vì không rõ ràng. "Program Files (x86)" chỉ là một ví dụ. Tôi đã thay đổi câu hỏi để phản ánh đúng điều này. –