2013-09-04 26 views
7

tôi cần phải cài đặt một vài cài đặt trong cùng thư mục để nó xung đột với các thiết lập INNO tên chương trình cài đặt unins000.exeunins000.datThay đổi tên mặc định của một trình gỡ bỏ Inno-Setup để tránh đặt tên xung đột

Có cách nào để thay đổi tên mặc định của trình gỡ cài đặt Inno-Setup?

+0

Không thể. Và bạn nên tránh sử dụng các hacks từ các câu trả lời dưới đây. Đổi tên các tập tin cài đặt sẽ phá vỡ nâng cấp. Xem http://www.jrsoftware.org/ishelp/index.php?topic=appendnotes –

Trả lời

4

điều này tương tự Elektrostudios' câu trả lời, và là những gì làm việc cho tôi:

Filename: {cmd}; Parameters: "/C Mkdir ""{app}\Uninstallers\{#MyAppName}"""; Flags: RunHidden WaitUntilTerminated 
    Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.exe"" ""{app}\Uninstallers\{#MyAppName} - uninstall.exe"""; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 
    Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.dat"" ""{app}\Uninstallers\{#MyAppName} - uninstall.dat"""; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 
    Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.msg"" ""{app}\Uninstallers\{#MyAppName} - uninstall.msg"""; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 
    Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#MyAppName}_is1"" /V ""UninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#MyAppName} - uninstall.exe\"""" /F"; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 
    Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#MyAppName}_is1"" /V ""QuietUninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#MyAppName} - uninstall.exe\"" /SILENT"" /F"; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 

Sử dụng Windows 7, tôi phát hiện ra rằng 'di chuyển' lệnh sẽ không làm việc trừ khi tôi có nơi nào đó để di chuyển các tập tin đến đầu tiên, ý nghĩa tôi phải thêm dòng mkdir ở trên cùng. Ngoài ra, trình gỡ cài đặt sẽ không hoạt động nếu không có tệp .msg được di chuyển, vì vậy tôi đã theo dõi mẫu và thêm dòng đó.

Tôi không bận tâm thay đổi "Windows 8" thành "Windows 7" nhưng nó không tạo ra bất kỳ sự khác biệt nào, vì vậy tôi sẽ để nó một mình. Nếu có một vấn đề mà tôi không biết, tôi chắc chắn ai đó sẽ chỉ ra như vậy trong một bình luận.

{#MyAppName} là, tất nhiên, hằng số được xác định ở đầu tệp ISS khai báo tên của ứng dụng. Hằng số của bạn có thể được xác định khác nhau, vì vậy bạn sẽ cần thay đổi nó để khớp với những nơi cần thiết.

+0

Tôi chỉ muốn đưa điểm cho những người giúp tôi và trả lời, cảm ơn bạn đã chia sẻ! – ElektroStudios

+0

Có, @SertacAkyuz bạn là chính xác, nó không phải là "thay đổi tên trình gỡ bỏ mặc định", tuy nhiên, nó là một workaround không có khả năng làm như vậy. Vì vậy, trong khi nó không phải là một câu trả lời trực tiếp các câu hỏi trong tầm tay, nó giải quyết vấn đề. –

+0

Không đảm bảo rằng trình gỡ cài đặt được đặt tên là 'unins000.exe'. Số sẽ thay đổi, nếu có một tệp khác đã có tên này. Điều gì có thể xảy ra, nếu bạn đang hạ cấp ứng dụng của bạn chẳng hạn. Xem thêm http://www.jrsoftware.org/ishelp/index.php?topic=appendnotes –

10

Không. 'Unins' được mã hóa cứng trong quy trình tạo tên của tệp thực thi, dữ liệu và msg, trong GenerateUninstallInfoFilename 'thủ tục' cài đặt.pas 'của các nguồn thiết lập nội bộ.

GenerateFilenames thủ tục phụ có này:

BaseFilename := AddBackslash(BaseDir) + Format('unins%.3d', [I]); 
UninstallExeFilename := BaseFilename + '.exe'; 
.. 

đâu 'Tôi' là một số nguyên và 'basedir' có nguồn gốc từ UninstallFilesDir mà bạn có thể thay đổi.

6

Vâng, trong khi nó vẫn không thể để nativelly thay đổi tên chương trình cài đặt sau đó tôi sẽ sử dụng lệnh hàng loạt ở phần chạy để đổi tên chương trình cài đặt và để làm điều tương tự trong các đường dẫn ứng dụng gỡ bỏ registry:

[Run] 
Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.exe"" ""{app}\Uninstallers\{#ApplicationName} - uninstall.exe"""; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated 
Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.dat"" ""{app}\Uninstallers\{#ApplicationName} - uninstall.dat"""; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated 

Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#ApplicationName}_is1"" /V ""UninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#ApplicationName} - uninstall.exe\"""" /F"; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated 
Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#ApplicationName}_is1"" /V ""QuietUninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#ApplicationName} - uninstall.exe\"" /SILENT"" /F"; StatusMsg: Installing {#TipName}...; Flags: RunHidden WaitUntilTerminated 
+1

Upvote bởi một vì tôi đã có thể thích ứng với giải pháp này để làm việc cho tôi (xem giải pháp được đăng bên dưới) –

+1

hack tuyệt vời! – CyprUS

7

Inno tự động thực hiện khi phát hiện một ứng dụng khác đang được cài đặt vào cùng một thư mục (dựa trên AppID khác nhau). Không cần phải đi sau lưng và đổi tên các tệp trình gỡ cài đặt.

+0

Điều đó sai vì thật khó để biết trình gỡ cài đặt nào thuộc về cài đặt nào. – Magnus

+1

@Magnus Thực tế là một người ngẫu nhiên đi qua các thư mục không thể nói với họ ngoài việc không làm cho thực tế là Inno tự động xử lý sai. Nếu bạn, vì nhà phát triển muốn làm cho nó dễ dàng hơn, hãy thêm các phím tắt trong nhóm menu bắt đầu trỏ tới '{uninstallexe}', trỏ chúng vào applet Add/Remove Programs, hoặc thiết lập 'UninstallDir'. Inno vẫn xử lý các ứng dụng khác nhau trong cùng một thư mục hoàn hảo và theo thiết kế. – Deanna

0

Thiết lập Inno không cung cấp bất kỳ cách nào để cho phép bạn đặt tên (hoặc đổi tên) trình gỡ cài đặt. Inno Setup tự lo việc đặt tên xung đột. Cũng cần lưu ý rằng khi bạn cố đổi tên trình gỡ cài đặt theo cách thủ công (như một số câu trả lời ở đây), bạn ngắt tham chiếu đến trình gỡ cài đặt trong Thêm hoặc ứng dụng từ xa trong Pa-nen Điều khiển.

Ngay cả khi bạn sửa tham chiếu, có một vấn đề khác. Khi bạn nâng cấp sau, trình cài đặt mới sẽ không tìm thấy nhật ký của trình cài đặt trước đó và sẽ không thể hợp nhất chúng. Do đó, việc gỡ cài đặt trong tương lai sẽ không xóa hoàn toàn ứng dụng. Xem tài liệu Appending to Existing Uninstall Logs trong tài liệu Inno Setup.

2

Chỉ cần xử lý với chính bản thân mình. Bạn không nên di chuyển trình gỡ cài đặt chính nó xung quanh, vì lý do Martin Prikryl chỉ ra. Nhưng tôi đồng ý không hài lòng khi có một loạt các trình gỡ cài đặt được đánh số nằm trong một thư mục không có phương tiện rõ ràng để nói cái nào.

Có giải pháp sử dụng các thiết bị mà Inno Setup cung cấp. Trong [Setup] phần:

[Setup] 
... 
UninstallFilesDir=Uninstall\exe\{#NAME_OF_APP} 
... 

Sau đó, trong phần [Dirs]:

[Dirs] 
... 
Name: Uninstall\exe; Attribs: hidden; 
Name: Uninstall\exe\{#NAME_OF_APP}; Attribs: hidden; 
... 

Và cuối cùng bạn tạo tên phím tắt trong [Icons] trỏ đến các Uninstallers mà sẽ luôn luôn có cùng tên vì bạn đã cô lập chúng:

[Icons] 
... 
Name: Uninstall\{#NAME_OF_UNINSTALLER}; Filename: Uninstall\exe\{#NAME_OF_APP}\unins000.exe 
... 

Điều này để lại tham chiếu trong hệ điều hành cho riêng trình gỡ cài đặt, ẩn nội dung khó hiểu các tên thực thi trong một thư mục mà người dùng thường sẽ không nhìn thấy nhưng vẫn có thể truy cập và cung cấp các phím tắt có tên, mô tả mà tất cả có thể sống trong cùng một thư mục. Bạn cũng có thể cung cấp cho các phím tắt một biểu tượng tốt. Để có biện pháp tốt, có thể thả một README bổ sung vào thư mục \ exe để giải thích những gì đang diễn ra trong trường hợp ai đó bị tò mò (họ sẽ tự nhiên).

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