2016-07-16 20 views
-2

Install.pasデルファイ単位を編集して、私は私のInnoセットアップスクリプトがInno Setup Compiler 5.5.9 Unicodeのソースコードを変更することによって、アンインストールのためのuninstaller.exeファイルではなく、unins000.exeを作成したいです。名前の変更「unins000.exe」

私はこれらのコードを持っているのDelphiユニットInstall.pasを開く:

procedure GenerateUninstallInfoFilename; 
    var 
    ExistingFiles: array[0..999] of Boolean; 
    BaseDir: String; 

    procedure FindFiles; 
    var 
     H: THandle; 
     FindData: TWin32FindData; 
     S: String; 
    begin 
     H := FindFirstFile(PChar(AddBackslash(BaseDir) + 'unins???.*'), 
    FindData); 
     if H <> INVALID_HANDLE_VALUE then begin 
     repeat 
      S := FindData.cFilename; 
      if (Length(S) >= 9) and (CompareText(Copy(S, 1, 5), 'unins') = 0) and 
     CharInSet(S[6], ['0'..'9']) and CharInSet(S[7], ['0'..'9']) and CharInSet(S[8], ['0'..'9']) and 
     (S[9] = '.') then 
      ExistingFiles[StrToInt(Copy(S, 6, 3))] := True; 
     until not FindNextFile(H, FindData); 
     Windows.FindClose(H); 
    end; 
end; 

procedure GenerateFilenames(const I: Integer); 
var 
    BaseFilename: String; 
begin 
    BaseFilename := AddBackslash(BaseDir) + Format('unins%.3d', [I]); 
    UninstallExeFilename := BaseFilename + '.exe'; 
    UninstallDataFilename := BaseFilename + '.dat'; 
    UninstallMsgFilename := BaseFilename + '.msg'; 
end; 

私はセットアップは、アンインストール情報を保存するときuninstaller.exe , uninstaller.dat , uninstaller.msgファイルを作成するには、このコードを変更したいです。

したがって、古いインストールをアンインストールせずにプログラムを再インストールしようとすると、古いuninstaller.exeが検出されると、セットアップでその古いuninstaller.exeが検出され、ユーザーの確認なしで上書きされます。

コンパイラ使用:CodeGear RAD Studio with Delphi 2009 Update 4

私はこれをどのように行うことができるか知りたいのですが、私はテスト目的でのみこれを行います。 Inno Setupのは、アンインストールログファイルをそれ以外のエラーが発生見つけることができないようuninstaller.exeunins000.exeの名前を変更した後

は、見え.........

Setup Crashes on second re-installation over an old installation

はご協力いただきありがとうございます。

+0

関連性の高いコードが多分あります。あなたはプログラマーを雇ったり、多分あなた自身をプログラムすることを学ぶことを考えましたか?プログラマはコードを理解することができ、コードを変更する方法を知ることができます。明らかに、ナンバリングロジックを削除することでここで大きな変更を加えたいと思っています。 –

+0

しかし@DavidHeffernanお願いします............私はこのコードの変更について私に教えてくれるものを理解しようとします.....私はuninsをアンインストーラにリネームしようとしましたが、 'uninstaller000.exe'のように最後に3桁の数字があります。この「000/001/002 ............ 999」はどのように削除できますか? – GTAVLover

+0

コードを読むことから始めます。あなたはそれが何を理解していますか?どのように番号付けロジックを変更したいですか?関連性の高いコードを省略したことを覚えておいてください。私はあなたが十分な努力をしていないことをお勧めします。 –

答えて

2

私はあなたが、少なくとも非常に基本的なプログラミングのスキルを持っているとします

ラインUninstallExeFilenameにブレークポイントを置く:= BaseFilename + '.EXE';

ベースファイル名を、IDEでのウォッチを使用して確認します。 それは何と言いますか?

要件に合わせるには 'uninstaller'にする必要があります。異なる場合は、BaseFilenameの変数を参照し、割り当てられた値を確認してください。

この変数を数値に変更する行は、コメントアウトまたは変更できます。

+0

私はすでにそれを試しました。私は前のように 'uninstaller'のようなコードを変更しましたが、'アンインストーラファイルが終了したことを伝える古いインストールにプログラムを再インストールするとセットアップが警告します。問題を修正してからやり直してください。'' {app} 'ディレクトリ内の既存の' uninstaller.exe'を上書きするようにこのコード( 'FindFiles procedure')をします... – GTAVLover

+0

行H:= FindFirstFile(PChar(AddBackslash(BaseDir) )+ 'unins ???。*')は、既存のアンインストーラ(番号付き)を検索します。この行も 'uninstaller。*'のように変更してuninst000ファイルを無視してください。 – Slappy

+0

このエラーが発生する: 'Create Process Failed、 The File Exists、Code:80':(............なぜそれ? – GTAVLover

関連する問題