0
我已經回答了this問題,因爲我需要在WIX安裝期間編輯文件,該文件不是xml文件。我正在通過wix部署一個網站,我需要根據用戶輸入對一個文件進行一些更改。在wix自定義操作中編輯inetpub文件夾中的文件
下面是我的自定義操作
<CustomAction Id="CustomActionID_Data" Property="CustActionId" Value="FileId=[#filBEFEF0F677712D0020C7ED04CB29C3BD];MYPROP=[MYPROP];"/>
<CustomAction Id="CustActionId"
Execute="deferred"
Impersonate="no"
Return="ignore"
BinaryKey="CustomActions.dll"
DllEntry="EditFile" />
以下是自定義操作的代碼。
string prop= session.CustomActionData["MYPROP"];
string path = session.CustomActionData["FileId"];
StreamReader f = File.OpenText(path);
string data = f.ReadToEnd();
data = Regex.Replace(data, "replacethistext", prop);
File.WriteAllText(path, data); // This throws exception.
由於這是在IISs intetpub文件夾下,我的操作會拋出錯誤,表明該文件正在被另一個進程使用。任何解決方案
如果需要知道我的執行順序,它是在installfiles之後,所以站點尚未啓動但文件被複制。
<InstallExecuteSequence>
<Custom Action="CustomActionID_Data" Before="CustActionId">NOT REMOVE</Custom>
<Custom Action="CustActionId" After="InstallFiles">NOT REMOVE</Custom>
</InstallExecuteSequence>
只是一個想法,WIX安裝程序本身已經掌握了該文件,自定義操作由於相同的原因無法修改它嗎?如果是的話那麼該怎麼辦? –