2011-12-13 34 views
5

Tôi đã tạo một ứng dụng winforms đơn giản và trình cài đặt tùy chỉnh. Tất cả dường như đủ đơn giản nhưng tôi nhận được thông tin chi tiết về lỗi và cửa sổ bật lên sau trong nhật ký sự kiện.Lỗi 1001 bằng trình cài đặt tùy chỉnh với Visual Studio 2008

Error message box displayed before running the custom action code

The description for Event ID 11001 from source MsiInstaller cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event:

Product: Custom Action Tester -- Error 1001. Error 1001. Exception occurred while initializing the installation: System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\Windows\system32\Action' or one of its dependencies. The system cannot find the file specified.. (NULL) (NULL) (NULL) (NULL) (NULL)

the message resource is present but the message is not found in the string/message table

Tôi đã kiểm tra C: \ Windows \ system32 và không có tập tin hoặc thư mục có tên Action nhưng có 3 file gọi ActionCenter.dll, ActionCenterCPL.dllActionQueue .dll

Bất kỳ ý tưởng nào về cách giải quyết lỗi này?

EDIT:

Tiếp theo gợi ý của Cosmin-pirvu Tôi chạy trình cài đặt với khai thác gỗ. Khu vực có vẻ như lỗi được hiển thị bên dưới nhưng tôi vẫn không khôn ngoan hơn làm cách nào để giải quyết vấn đề.

MSI (s) (40:7C) [09:34:26:523]: Executing op: CustomActionSchedule(Action=_FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install,ActionType=3073,Source=BinaryData,Target=ManagedInstall,CustomActionData=/installtype=notransaction /action=install /LogFile= /targetdir="C:\Test\Custom Action Tester\" /Param1="C:\Test\TestFile.txt" /Param2="C:\Test\" "C:\Test\Custom Action Tester\ConfigSetup.dll" "C:\Users\wildb\AppData\Local\Temp\CFG66BE.tmp") 
MSI (s) (40:94) [09:34:26:525]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI85A8.tmp, Entrypoint: ManagedInstall 
MSI (s) (40:F0) [09:34:26:525]: Generating random cookie. 
MSI (s) (40:F0) [09:34:26:557]: Created Custom Action Server with PID 6492 (0x195C). 
MSI (s) (40:D4) [09:34:26:586]: Running as a service. 
MSI (s) (40:D4) [09:34:26:587]: Hello, I'm your 32bit Elevated custom action server. 
DEBUG: Error 2835: The control ErrorIcon was not found on dialog ErrorDialog 
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2835. The arguments are: ErrorIcon, ErrorDialog, 
Error 1001. Error 1001. Exception occurred while initializing the installation: 
System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\Windows\system32\Action' or one of its dependencies. The system cannot find the file specified.. 
MSI (s) (40!4C) [09:34:29:580]: 
MSI (s) (40:94) [09:34:29:584]: Leaked MSIHANDLE (14) of type 790531 for thread 7244 
MSI (s) (40:94) [09:34:29:584]: Note: 1: 2769 2: _FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install 3: 1 
DEBUG: Error 2769: Custom Action _FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install did not close 1 MSIHANDLEs. 
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2769. The arguments are: _FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install, 1, 
CustomAction _FBC0CC84_D5B4_41F9_A3EC_98A13BC7E73E.install returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox) 
Action ended 09:34:29: InstallExecute. Return value 3. 

Đây được cho là một chiến thắng nhanh chóng để làm cho cuộc sống trở nên đơn giản hơn cho người dùng của chúng tôi; họ không muốn phải chỉnh sửa các tập tin cấu hình ... nhưng nó biến thành một cơn ác mộng. : O (

EDIT 2:

Sau rất nhiều chơi xung quanh, sai số chỉ trình bày bản thân khi tham số được quy định trong hành động tùy chỉnh như thể hiện trong hình Vấn đề là, trình cài đặt tùy chỉnh được. vô ích mà không thể đọc các giá trị nhập vào màn hình trước cài đặt.

Custom action property screen

+1

Thử tạo nhật ký cài đặt chi tiết để xem điều gì gây ra lỗi: http://setupanddeployment.com/debugging/msi-log. Bạn có thể tìm kiếm "Giá trị trả lại 3" trong nhật ký. –

Trả lời

6

Sau nhiều giờ đi vòng vòng tôi cuối cùng đã tìm thấy vấn đề và quan trọng hơn, giải pháp.

Nó nên có thể để vượt qua các thông số như "CustomActionData" theo quy định on this blog nhưng các thông số là một querky ít để nói rằng ít nhất ...

tôi thấy rằng các thông số văn bản không thể có dấu ngoặc kép quanh tham số tên và nên được định dạng như thế này:

/Param1=[CONFIG_TESTFILE] /Param2=[CONFIG_TESTFOLDER]

Ngoài ra, để sử dụng tham số mục tiêu bạn cần bao gồm dấu ngoặc kép nhưng thay vì kết thúc lĩnh vực này với một dấu gạch chéo trở lại, bạn phải sử dụng một không gian thay vào đó, như thế này :

/target="[TARGETDIR] "

+3

Tôi sẽ đề xuất sử dụng "\" thay vì một khoảng trống cho mục tiêu. Bạn có thể dễ dàng sử dụng mã này để có được đường dẫn chính xác: string exePath = Path.Combine (Context.Parameters ["targetdir"], "TestForSetup.exe"); var config = ConfigurationManager.OpenExeConfiguration (exePath); –

+1

Cảm ơn, điều này thực sự làm tôi bối rối. Và phần cuối cùng thực sự rất lạ. – Jens

+0

@Stef Ngay cả với dấu "\", bạn phải thêm một khoảng trắng để trình cài đặt hoạt động chính xác. (Không có không gian, trình cài đặt của tôi cài đặt thành công phần mềm của tôi, nhưng việc cài đặt không thành công sẽ hiển thị thông báo trên.) Có vẻ như điều này là do trình cài đặt xử lý kết thúc "\" làm ký tự thoát cho dấu ngoặc kép kết thúc ("). Vì vậy, bạn phải chèn một dấu cách vào giữa. –

Các vấn đề liên quan