2012-03-05 32 views
12

một lần nữa tôi bị kẹt ở một vấn đề, có thể dễ dàng giải quyết.
Tôi muốn mở rộng thiết lập, được tạo bằng WiX, để thực hiện thay đổi trong tệp cấu hình của chương trình đã cài đặt. Để thực hiện việc này, tôi đã tạo một CustomAction. Để có thể thay đổi tệp cấu hình, tôi cần biết vị trí (cài đặt) của nó trong số CustomAction của tôi. Do đó, tôi thử chuyển số INSTALLLOCATION và Tên tệp đến CustomAction của mình. Đây là vấn đề: CustomActionData-Thuộc tính luôn trống và thiết lập sẽ ném ngoại lệ.WiX CustomActionData trống trong gọi là CustomAction

Hành động tùy chỉnh của tôi là tệp C# DLL: DemoDatumErzeugen.CA.dll. Nó chứa một phương thức DatumEintragen để sửa đổi tệp cấu hình. Tôi đang cố truy cập dữ liệu theo cách này:

string path = session.CustomActionData["LOCATION"]; 

Đây là trường hợp ngoại lệ được ném. Tôi chỉ nhận được thông báo lỗi của Đức, nhưng nó nói điều gì đó dọc theo các dòng: The supplied key was not found in the dictionary (Der angegebene Schlüssel war nicht im Wörterbuch angegeben.).

Đây là cách tôi cố gắng đi qua các thuộc tính từ thiết lập kịch bản của tôi để hành động tùy chỉnh của tôi:

<Binary Id="DemoDatumEinrichtenCA" SourceFile="DemoDatumErzeugen.CA.dll"/> 

<CustomAction Id="DemoDatum.SetProperty" Return="check" Property="DatumEintragen" Value="LOCATION=[INSTALLLOCATION];NAME=StrategieplanConfig.xml;"/> 
<CustomAction Id="DemoDatum" BinaryKey="DemoDatumEinrichtenCA" DllEntry="DatumEintragen" Execute="deferred" Return="check" HideTarget="no"/> 

<InstallExecuteSequence> 
    <Custom Action="DemoDatum.SetProperty" After="InstallFiles"/> 
    <Custom Action="DemoDatum" After="DemoDatum.SetProperty"/> 
</InstallExecuteSequence> 

Tôi đã nhìn thấy rất nhiều ví dụ nơi mà nó đã được thực hiện theo cùng một cách hoặc ít nhất là rất giống nhau. Tôi đã thử nhiều thứ nhưng không có gì có vẻ như giúp thay đổi giá trị Sau khi trong <Custom Action="DemoDatum.SetProperty" After="InstallFiles"/>. CustomActionData luôn bằng không.
Tôi kiểm tra bằng: session.CustomActionData.Count
Một lần nữa tôi rất biết ơn vì bất kỳ trợ giúp hoặc gợi ý nào mà tôi đã làm điều gì sai.

Trả lời

17

Giá trị thuộc tính Property của DemoDatum.SetProperty phải bằng giá trị thuộc tính Id của hành động hoãn lại. Vì vậy, hãy đổi tên thuộc tính thành DemoDatum hoặc thay đổi Id của hành động hoãn lại thành DatumEintragen.

+0

Thật vậy! Điều đó là vậy đó. Cảm ơn bạn rất nhiều. Thật dễ dàng để bỏ qua. – Skalli

+0

@Yan Sklyarenko Tôi đang gặp phải sự cố khi cài đặt .exe được tạo bằng ứng dụng bootstraper. Bạn có thể xem xét SO này và giúp tôi http://stackoverflow.com/questions/27151665/error-0x80070643-fatal-error -dầu cài đặt-wix – user2725407

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