0

我使用Installshield 2010,一個基本的MSI項目。如何在Installshield 2010中的InstallFinalize之後運行RemoveFiles?

有沒有辦法使用RemoveFiles操作在InstallFinalize之後從RemoveFile表中刪除文件?

我有一些文件包含在安裝程序的組件中。我使用這些文件來配置其他文件,並在InstallFinalize之後,我想刪除它們。

我閱讀了有關RemoveFiles的操作,我注意到該操作在InstallFiles之前運行。

是否可以改變這種情況或回想起這個動作?怎麼樣?

謝謝你的時間!

+0

好的,謝謝你的指導! –

回答

0

如果您在安裝程序的執行過程中只需要臨時文件,則將它們置於支持文件視圖而非組件視圖中。

InstallShield有一個表(ISSetupFile)和相關的自定義操作,它們將這些文件提取到臨時目錄並將其分配給[SUPPORTDIR]屬性。它也會在安裝結束時爲您清理。

這樣你就不會對抗MSI,試圖讓它在安裝過程中安裝和卸載。

+0

也取決於您在做什麼時「配置」這些文件可能是其他方式在MSI中使用更簡單的設計來完成的。 –

+0

謝謝克里斯託弗!我成功地使用支持文件視圖,這解決了我的問題。我想用特殊證書籤署一些文件,並用外部程序對它們進行一些更改,我認爲我無法通過更簡單的設計來實現。 –

+0

我擔心你說的證書。這是一個敏感的文件嗎?知道MSI的任何人都可以使用Orca從ISSetupFile表中提取證書。我不知道你的整個故事,但你可能想重新考慮它是如何完成的。也許你會將這一點從安裝程序中分解出來並轉化爲應用程序首次運行的情況。也許是一個C++ EXE,它具有一個excrypted資源,可以提取和刪除它以更好地保護文件。 –

0

否您不能在InstallFinalize之後移動RemoveFiles操作。正如MSDN文檔所述,它必須在InstallFiles操作之前安排。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa371199(v=vs.85).aspx

我會建議使用自定義操作來進行清理。

+0

像運行批處理文件來刪除文件的自定義操作?我雖然我可以使用預定義的功能,如果installshield有一個... –

+0

是的,類似的東西。但是,您可以使用自定義操作完成更多操作:http://msdn.microsoft.com/en-us/library/windows/desktop/aa368066(v=vs.85).aspx – Ciprian

相關問題