2012-09-28 40 views
9

Tôi đã điều sau đây trong một file bat:Cài đặt Windows Service với tập tin batch?

@ECHO OFF 

REM The following directory is for .NET 4.0 
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319 
set PATH=%PATH%;%DOTNETFX2% 

echo Installing IEPPAMS Win Service... 
echo --------------------------------------------------- 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil My.WindowsService.exe 
echo --------------------------------------------------- 
pause 
echo Done. 

Vấn đề là nó ngay cả khi file dơi nằm trong thư mục giống như My.WindowsService.exe nó sẽ cố gắng tìm kiếm nó trong C : \ Windows \ System32 .....

làm thế nào để giải quyết này?

+0

Chỉ cần đoán, nhưng còn về. \ My.WindowsService.exe? – akluth

Trả lời

9

Đây là cách nó được giải quyết:

@ECHO OFF 

REM The following directory is for .NET 4.0 
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319 
set PATH=%PATH%;%DOTNETFX2% 

echo Installing IEPPAMS Win Service... 
echo --------------------------------------------------- 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil "%~dp0My.WindowsService.exe" 
echo --------------------------------------------------- 
pause 
echo Done. 
+0

"% ~ dp0" - Biến% ~ dp0 (đó là số không) khi được tham chiếu trong tệp lô Windows sẽ mở rộng đến ký tự ổ đĩa và đường dẫn của tệp lô đó. Các biến% 0-% 9 tham chiếu đến các tham số dòng lệnh của tập tin thực thi. % 1-% 9 tham chiếu đến đối số dòng lệnh sau tên tệp lô. % 0 đề cập đến chính tệp bó. [Kiểm tra câu trả lời này] (https://stackoverflow.com/a/10290765/3378621) –

5

Theo một số điều tôi đã tìm thấy, đi qua một đường dẫn tuyệt đối đến dịch vụ của bạn là những gì bạn muốn. Ví dụ:

{...Path_To_.NET_Framework...}\InstallUtil C:\MyFolder\My.WindowsService.exe 

Bạn có thể lấy thư mục hiện tại của bạn với một cái gì đó như thế này trong tập tin thực thi của bạn, nếu bạn muốn có một con đường tạo động:

set CURDIR=%CD% 
{...Path_To_.NET_Framework...}\InstallUtil %CURDIR%\My.WindowsService.exe 

Tài liệu tham khảo:

1

Nó là quá cũ nhưng hữu ích cho tôi ... Tôi đã thực hiện một số thay đổi.

dịch vụ của tôi bắt đầu bằng tay như vậy, trong đợt I bao gồm các lệnh bắt đầu và sau đó mở giao diện điều khiển để kiểm tra các dịch vụ cài đặt.

@ECHO OFF 

REM The following directory is for .NET 4.0 
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319 
set PATH=%PATH%;%DOTNETFX2% 

echo Installing MyService Win Service... 
echo --------------------------------------------------- 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil /i "%~dp0MyService.exe" 
net start MyService 
services.msc 
echo --------------------------------------------------- 
pause 
echo Done. 
Các vấn đề liên quan