我竭力試圖找出如何更新使用的InstallScript在一個XML文件中的一些屬性。我想使用正確的XML解析函數,但是我找不到任何暗示此版本的InstallScript能夠實現的功能。我怎樣才能做到這一點?我是否應該嘗試使用FileInsertLine和FileGrep的組合?有我缺少的圖書館嗎?
背景:
軟件版本是什麼?
我在Windows Server 2003 R2上使用InstallShield 11。
爲什麼我不只是使用現有的「XML文件更改」功能?
因爲我正在升級並運行到this bug。它影響XML文件更改功能,因爲它綁定到一個組件(好吧,這是我的猜測)。我花了太長時間嘗試官方的解決方法,但無法哄騙它工作。我最終發現使用InstallScript +單行批處理文件複製文件更容易,更可靠。這感覺有點冒失,但它確實有效。
現在我正試圖找出最簡單和最簡單的方法來複制InstallScript中「XML文件更改」功能的效果。
請讓我知道,如果你需要任何更多信息,我會很樂意提供它。
編輯:
我結束了安裝InstallScript方式要做到這一點畢竟 - 它往往是一切在這個安裝項目實施的方式,它看上去(和原來)很快就能做到。我開始在該線程中使用代碼shown by TheTraveler,並對其進行了修改以適合我的需求。
下面是代碼:
prototype UpdateWebConfigAttributes();
prototype ReplaceValueOf(OBJECT, STRING, STRING);
function UpdateWebConfigAttributes()
OBJECT oDoc, oNode;
NUMBER i;
STRING sWebConfigFilePath;
BOOL successfulLoad;
begin
sWebConfigFilePath = "Path\\To\\Web.config";
if Is(FILE_EXISTS, sWebConfigFilePath) = FALSE then
MessageBox("Could not find Web.config file.", 0);
endif;
// get values from public properties
set oDoc = CreateObject("Msxml2.DOMDocument.4.0");
if !IsObject(oDoc) then
MessageBox("Could not create XML Document", 0);
return -1;
endif;
oDoc.async = FALSE;
oDoc.setProperty("SelectionLanguage", "XPath");
successfulLoad = oDoc.load(sWebConfigFilePath);
if !successfulLoad then
MessageBox("Could not load Web.config as an xml file", SEVERE);
return -1;
endif;
ReplaceValueOf(oDoc, "//add[@key=\"ConnectionDriver\"]", CONNECT_DRIVER);
ReplaceValueOf(oDoc, "//add[@key=\"ConnectionType\"]", CONNECT_TYPE);
ReplaceValueOf(oDoc, "//add[@key=\"ConnectionString\"]", CONNECT_STRING_WEBCONFIG);
ReplaceValueOf(oDoc, "//add[@key=\"ShowConnection\"]", "False");
oDoc.save(sWebConfigFilePath);
set oDoc = NOTHING;
end;
function ReplaceValueOf(oDoc, xPath, valueToPutIn)
OBJECT oNode;
begin
set oNode = oDoc.selectNodes(xPath)(0);
try
oNode.attributes.getNamedItem("value").value = valueToPutIn;
catch
MessageBox("Could not set '" + xPath + "' with '" + valueToPutIn + "'", SEVERE);
endcatch;
end;
這是一個MSI類型 - 類型屬性說 「基本MSI項目」。 不幸的是,升級到更新版本的InstallShield目前還不是我的選擇,因此我將查看您關聯的討論和WiX中的Util擴展。謝謝克里斯託弗:) – 2010-11-09 17:11:59
哇,我知道你的名字聽起來很熟悉 - 我已經結束了在Flexera論壇上閱讀你的一些帖子,同時試圖解決這些和以前的問題! – 2010-11-09 17:16:01
這很奇怪 - 當試圖查看WiX 3手冊中的幾乎任何頁面時,我所得到的只是一個空白內容部分,頁面沒有